深入理解Java對(duì)象實(shí)例生成的例子!

字號(hào):

代碼如下:
    class A {
    public int Avar;
    public A() {
    System.out.println("AAA");
    doSomething();
    }
    public void doSomething() {
    Avar = 1111;
    System.out.println("A.doSomething()");
    }
    }
    public class B extends A {
    public int Bvar = 2222;
    public B() {
    System.out.println("BBB");
    doSomething();
    System.out.println("Avar=" + Avar);
    }
    public void doSomething() {
    System.out.println("Bvar=" + Bvar);
    }
    public static void main(String[] args) {
    new B();
    }
    }
    講解:
    順序是這樣得,首先生成B就得先生成A,
    所以調(diào)用A的構(gòu)造器,輸出AAA,
    然后調(diào)用方法dosomething,?。?!
    注意:A的該方法被B覆蓋,
    而你生成的是B的對(duì)象,
    所以它調(diào)用B的方法,
    由于BVAR目前沒(méi)有給定值,
    所以自動(dòng)初始化為0,
    然后生成B對(duì)象,
    先初始化變量BVAR,
    然后調(diào)用構(gòu)造器輸出BBB,
    然后調(diào)用方法,
    這時(shí)BVAR已初始化,
    所以輸出BVAR=2222,
    而對(duì)象A中變量AVAR由于沒(méi)有調(diào)用對(duì)象A的方法dosomething,
    所以其值為0,則輸出0
    全部輸出就如下:
    AAA
    Bvar=0
    BBB
    Bvar=2222
    Avar=0
    注意:初始化順序,當(dāng)繼承時(shí),先生成超類(lèi)對(duì)象,生成對(duì)象時(shí),先生成靜態(tài)變量,然后是一般變量,然后調(diào)用構(gòu)造器!當(dāng)所以超類(lèi)對(duì)象生成后,生成本對(duì)象,順序一樣! 當(dāng)方法被覆蓋時(shí),調(diào)用目前對(duì)象的方法!這得注意