java 中super 的用法及意义

Python012

java 中super 的用法及意义,第1张

java中的super指的就是父类(super class)\x0d\x0a例:B继承A\x0d\x0aA类\x0d\x0aclass A {\x0d\x0a private String astr\x0d\x0a private String bstr\x0d\x0a public A(string astr, string bstr) {\x0d\x0a this.astr = astr //this指的是本类,在这里就是A\x0d\x0a this.bstr = bstr\x0d\x0a }\x0d\x0a \x0d\x0apublic String getAstr() {\x0d\x0a return this.astr\x0d\x0a}\x0d\x0a\x0d\x0apublic String getBstr() {\x0d\x0a return this.bstr\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0aB类\x0d\x0aclass B extends A {\x0d\x0a private String aa\x0d\x0a private String bb\x0d\x0a \x0d\x0a public B(String aa, String bb) {\x0d\x0a super(aa, bb) //这里就调用了父类的构造方法,给父类的super.astr,super.bstr(super.astr也就是父类的astr变量,super.bstr同理)两个变量赋值了,而不是给this.aa,this.bb(this.aa可以理解为本类的aa变量,this.bb同理)赋值\x0d\x0a // this.aa = aa \x0d\x0a // this.bb = bb\x0d\x0a } \x0d\x0a \x0d\x0apuplic String getAA() {\x0d\x0a return this.aa\x0d\x0a}\x0d\x0a\x0d\x0apublic String getBB() {\x0d\x0a return this.bb\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a测试类\x0d\x0apublic class Test {\x0d\x0a public static void main(String[] args) {\x0d\x0a B b = new B("aabb", "ccdd")// 调用B的构造方法,给super.astr,super.bstr赋值了\x0d\x0a System.out.println(b.getAa())// null 没有被赋值\x0d\x0a System.out.println(b.getBb()) // null\x0d\x0a System.out.println(b.getAstr())// aabb 调用父类的方法,返回super.astr的值\x0d\x0a System.out.println(b.getAstr()) // ccdd 调用父类的方法,返回super.bstr的值\x0d\x0a }\x0d\x0a}

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

super是引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名。

super()表示调用父类的构造方法,只是调用方法,不构造对象。 super.fun()表示调用父类的某方法 在继承的时候这个方法是肯定被继承下来的。如果fun()这个方法在子类没有重写,那么super.fun()实际上跟直接调用fun()是一样的。 如果被重写了,那么super.fun()就是重写前的,fun()就是重写后的。