javase -- super关键字


super.

父类

  • 使用super可以在构造器或方法中调用父类的属性(super.属性名)、构造器(super(形参列表))、方法(super.方法名
  • 通常情况下,我们习惯省略super
  • 但,父类,与子类存在同名的方法或属性时,如果你要调用父类属性或方法,不可省略super

Super调用构造器.

  • super(形参列表)只能放在子类构造中的首行
  • this()super()在构造器中只能存在一个
  • 在类的多个构造器中,至少有一个构造器使用super(形参列表)
  • 在构造器中如果没有显示定义this()super(),默认生成一个super()父类无参构造器
  • 如果父类不存在无参构造器,子类的构造器会爆红
public class A {
    int a;
    public A(int a) {
        this.a = a;
    }
}

class B extends A{
    public B() {//未定义隐式超构造函数 A()。必须显式调用另一个构造函数
    }
}

子类对象实例化的全过程.

  • 从结果上看
    • 子类继承父类以后,就获得了父类中声明的属性或方法
    • 创建子类的对象,在堆上,会加载所有父类中声明的属性。
  • 从过程上看
    • 当我们通过子类的构造器创建子类对象时,一定会直接或间接的调用父类的构造器,进而调用父类的构造器,直到调用到Object父类
    • 正是因为加载过所有的父类的结构,所以才可以看到内存中有父类的结构,子类对象才可以考虑进行调用

只是调用父类的构造器,并没有创建父类对象,自始至终,只创建了该类的一个对象


文章作者: liuminkai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liuminkai !
评论
 上一篇
javase -- 多态性的表现 javase -- 多态性的表现
多态性. 可理解为一个事物的多种形态 父类的引用指向子类对象(或子类的对象赋给父类的引用) 多态的使用.虚拟方法调用. 当调用子父类同名的方法时,实际执行的是子类重写父类的方法 父类根据子类更据赋给它的不同子类对象,动态调用属于子类的
2020-07-29
下一篇 
javase -- 方法重写 javase -- 方法重写
方法重写. 在子类中可以根据需要对从父类中继承的同名、同参数的方法进行改造 – 重写,也称为方法重置、覆盖 重写之后,当创建子类对象以后,通过子类对象调用子类中的同名同参数方法时,实际执行的是子类重写父类的方法 要求. 子类重写的方法
2020-07-28
  目录