Java 类构造函数的调用顺序
面试题中经常这样的题目,分析子类父类构造函数的调用顺序,下面开始分情况讨论父类子类构造函数的调用顺序:
先创建两个类 A 和 B,其中 B 继承 A
调用上述类:
运行结果:
从运行结果可得出以下结论:
实例化无参子类 B 时,先调用父类 A 的无参构造函数,再调用子类 B 的无参构造函数;
实例化有参子类 B 时,先调用父类 A 的默认无参构造函数,再调用 B 的有参构造函数;若要调用 A 的有参构造函数,则在类 B 的有参构造函数的第一行加上
super(msg)
这句代码。子类 B 调用方法时有两种情况:一是如果子类 B 中的方法和父类 A 中的 print 方法一致时,则调用子类 B 中 print 的方法,但是可通过
super.print()
调用父类中的print
方法;二是如果子类 B 中无 add 方法而父类 A 中有 add 方法时,则子类 B 的示例直接调用父类 A 中的 add 方法;父类 A 不能调用子类 B 中的方法和变量
评论