这种多重继承的情况下:
虚拟机是要给这三个类都分配内存空间的。
也就是说:
1、调用A的构造函数(如果B有无参构造函数),则A的构造器的第一行,隐式调用B的构造函数即效果与super()
相同。
2、当B的构造函数被调用,则B的构造器的第一行,隐式调用C的构造函数,即效果也与super()相同。
参考如下代码:
- class C {
- public C () {
- //这边隐式调用super(),即Object的构造器
-
- System.out.println("C");
- }
- }
- class B extends C {
- public B () {
- //这边隐式调用super(),即C的构造器
-
- System.out.println("B");
- }
- }
- class A extends B {
- public A () {
- //这边隐式调用super(),即B的构造器
-
- System.out.println("A");
- }
- }
- public class TClass {
- public static void main(String[] args) {
- new A();
- }
- }
复制代码
运行结果为:
C
B
A
|