父类 子类 构造方法 初始化 执行顺序

来源:百度文库 编辑:神马文学网 时间:2024/04/29 04:23:19
如果子类构造函数里没有super,系统默认super(),
顺序是:先父类,后子类,对于每个类,都是先初始化,在调用构造方法
“父类的构造方法调用发生在子类的变量初始化之前”。可以用下面的例子来证明:
例一
// Petstore.java
class Animal {
Animal() {
System.out.println("Animal");
}
}
class Cat extends Animal {
Cat() {
System.out.println("Cat");
}
}
class Store {
Store() {
System.out.println("Store");
}
}
public class Petstore extends Store{
Cat cat = new Cat();
Petstore() {
System.out.println("Petstore");
}
public static void main(String[] args) {
new Petstore();
}
}
运行这段代码,它的执行结果如下:
Store
Animal
Cat
Petstore
例二
class C {
C() {
System.out.print("C");
}
}
class D {
D() {
System.out.print("D");
}
}
class A {
C c = new C();
A() {
this("A");
System.out.print("A");
}
A(String s) {
System.out.print(s);
}
}
public class B extends A {
D d= new D();
B() {
//        super("A->B");
System.out.print("B");
}
public static void main(String[] args) {
new B();
}
}
打印是CAADB
$处若执行的话打印是CA->BDB