溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

深入理解Java對象實(shí)例生成的例子!(轉(zhuǎn))

發(fā)布時間:2020-08-12 21:10:50 來源:ITPUB博客 閱讀:171 作者:BSDLite 欄目:編程語言
深入理解Java對象實(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的對象,
所以它調(diào)用B的方法,
由于BVAR目前沒有給定值,
所以自動初始化為0,
然后生成B對象,
先初始化變量BVAR,
然后調(diào)用構(gòu)造器輸出BBB,
然后調(diào)用方法,
這時BVAR已初始化,
所以輸出BVAR=2222,
而對象A中變量AVAR由于沒有調(diào)用對象A的方法dosomething,
所以其值為0,則輸出0
全部輸出就如下:
AAA
Bvar=0
BBB
Bvar=2222
Avar=0
注意:初始化順序,當(dāng)繼承時,先生成超類對象,生成對象時,先生成靜態(tài)變量,然后是一般變量,然后調(diào)用構(gòu)造器!當(dāng)所以超類對象生成后,生成本對象,順序一樣! 當(dāng)方法被覆蓋時,調(diào)用目前對象的方法!這得注意。
向AI問一下細(xì)節(jié)
AI