分享

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

 隐形的翅膀 2006-12-21
如果子类构造函数里没有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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多