经验分享 – java基础学习-super关键字

super是直接父类对象的引用

可以通过super来访问父类中被子类覆盖的方法或属性

普通方法:

  • 没有顺序限制。可以随便调用

构造函数中:

  • 任何类的构造函数中,若是构造函数的第一行代码没有显示的调用super(...);那么Java会默认都会调用super();作为父类的初始化函数。所以你这里的super();加不加都无所谓。
package extand;
//父类
public class A {
    String name;
    public void eat(){
        System.out.println("吃苹果");
    }
}

package extand;

//子类
public class B extends A{
    public void eat(){
        super.eat();
    }
}

package extand;

public class C {
    public static void main(String[] args) {
        B b = new B();
        b.eat();
    }
}

用途

  1. 可以在子类中调用父类中被子类覆盖的方法 super.父类方法名称
  2. super在普通方法中使用的话,可以任意位置偏离
  3. super在构造方法中使用的话,会调用父类的构造方法,一定要将super放在第一行
  4. 在构造方法中,super关键字和this关键字不能同时出现
  5. 父类中的私有属性和方法都不能被调用,包括构造方法
  6. 子类的构造方法中都会默认使用super关键字调用父类的无参构造方法,因此在定义类的时候,无论自己是否定义了其他构造方法,最好将无参构造方法写上
  7. 如果构造方法中显示的指定了super的构造方法,那么无参的构造方法就不会被调用

小结

  • 在创建子类对象的时候一定会优先创建父类对象
  • 所有的Java类都具备同一个祖宗类Object,是所有类的根类
正文完