深入理解Java對(duì)象實(shí)例生成的例子!(轉(zhuǎn))[@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,
所以調(diào)用A的構(gòu)造器,輸出AAA,
然后調(diào)用方法dosomething,?。?!
注意:A的該方法被B覆蓋,
而你生成的是B的對(duì)象,
所以它調(diào)用B的方法,
由于BVAR目前沒有給定值,
所以自動(dòng)初始化為0,
然后生成B對(duì)象,
先初始化變量BVAR,
然后調(diào)用構(gòu)造器輸出BBB,
然后調(diào)用方法,
這時(shí)BVAR已初始化,
所以輸出BVAR=2222,
而對(duì)象A中變量AVAR由于沒有調(diào)用對(duì)象A的方法dosomething,
所以其值為0,則輸出0
全部輸出就如下:
AAA
Bvar=0
BBB
Bvar=2222
Avar=0
注意:初始化順序,當(dāng)繼承時(shí),先生成超類對(duì)象,生成對(duì)象時(shí),先生成靜態(tài)變量,然后是一般變量,然后調(diào)用構(gòu)造器!當(dāng)所以超類對(duì)象生成后,生成本對(duì)象,順序一樣! 當(dāng)方法被覆蓋時(shí),調(diào)用目前對(duì)象的方法!這得注意。
網(wǎng)頁標(biāo)題:深入理解Java對(duì)象實(shí)例生成的例子!(轉(zhuǎn))
文章URL:
http://weahome.cn/article/jsichj.html