假设有C继承B,B继承A;

Java学习之继承关系内存分配

 

 继承会继承除private修饰的成员变量,方法。但不会继承构造器。 所以调用被继承下来的方法时,不需要指明主调者,但是调用构造器时,就需要指明主调者,那就是super。如果继承中出现了函数的覆盖,那么默认主调者就是本对象(实例方法)或本类(类方法),如果想要调用被覆盖的方法,就得使用super(实例方法)或父类名(类方法)。

当创建并初始化C的对象时,会优先调用B的构造器,然后发现B还有A这个父类,会优先调用A构造器,然后发现A有Object这个父类,会优先调用Object构造器。所以整个过程就是,从上依次往下执行构造器的内容。

调用构造器的目的是完成堆内存中对象的初始化,如果某个父类构造器含有带参数的构造器,那么其子类就必须显示地调用其父类的构造器(super),否则编译出错。

相关文章:

  • 2021-12-17
  • 2022-01-29
  • 2022-01-28
  • 2021-11-08
  • 2022-02-25
  • 2022-12-23
  • 2021-06-22
  • 2021-07-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-27
  • 2022-12-23
  • 2022-02-04
  • 2022-01-23
相关资源
相似解决方案