深入理解Java物件例項生成的例子!(轉)

BSDLite發表於2007-08-17
深入理解Java物件例項生成的例子!(轉)[@more@]程式碼如下:

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,
所以呼叫A的構造器,輸出AAA,
然後呼叫方法dosomething,!!!
注意:A的該方法被B覆蓋,
而你生成的是B的物件,
所以它呼叫B的方法,
由於BVAR目前沒有給定值,
所以自動初始化為0,
然後生成B物件,
先初始化變數BVAR,
然後呼叫構造器輸出BBB,
然後呼叫方法,
這時BVAR已初始化,
所以輸出BVAR=2222,
而物件A中變數AVAR由於沒有呼叫物件A的方法dosomething,
所以其值為0,則輸出0
全部輸出就如下:
AAA
Bvar=0
BBB
Bvar=2222
Avar=0
注意:初始化順序,當繼承時,先生成超類物件,生成物件時,先生成靜態變數,然後是一般變數,然後呼叫構造器!當所以超類物件生成後,生成本物件,順序一樣! 當方法被覆蓋時,呼叫目前物件的方法!這得注意。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-962838/,如需轉載,請註明出處,否則將追究法律責任。

相關文章