深入理解Java物件例項生成的例子!(轉)
深入理解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
注意:初始化順序,當繼承時,先生成超類物件,生成物件時,先生成靜態變數,然後是一般變數,然後呼叫構造器!當所以超類物件生成後,生成本物件,順序一樣! 當方法被覆蓋時,呼叫目前物件的方法!這得注意。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用例項帶你深入理解Java記憶體模型Java記憶體模型
- 深入理解Java物件結構Java物件
- ssh埠轉發的深入例項
- 深入理解Java中的不可變物件Java物件
- JavaScript String 物件例項深入研究JavaScript物件
- 理解Python中的類物件、例項物件、屬性、方法Python物件
- JS函式,物件,例項方法,物件方法理解JS函式物件
- 深入理解Java物件序列化Java物件
- php例項化物件的例項方法PHP物件
- 例項分析理解Java位元組碼Java
- 非同步(一):Promise深入理解與例項分析非同步Promise
- Java獲取Class物件的方式和例項化物件的方式Java物件
- 深入理解建造者模式 ——組裝複雜的例項模式
- 深入理解多執行緒(三)—— Java的物件頭執行緒Java物件
- 深入理解多執行緒(二)—— Java的物件模型執行緒Java物件模型
- 深入理解JVM——物件JVM物件
- 深入理解JavaScript物件JavaScript物件
- 深入理解原型模式 ——通過複製生成例項原型模式
- ejb主物件,物件,例項 ?物件
- 引用物件與例項物件物件
- 例項和物件物件
- 《深入理解java虛擬機器》學習筆記2——Java記憶體溢位例項Java虛擬機筆記記憶體溢位
- 深入理解java的抽象類和介面(轉載)Java抽象
- [iOS]深入理解__bridge-OC物件與C++物件的引用轉換iOS物件C++
- 深入理解PHP物件注入PHP物件
- java基礎:深入理解Class物件與反射機制Java物件反射
- 【轉】java中註解的使用與例項Java
- 深入理解單例模式單例模式
- (轉)解密 Golang 的 Request 物件:深入理解 HTTP 請求的關鍵解密Golang物件HTTP
- 例項物件和函式物件的區別物件函式
- PHP物件導向深入研究之【物件生成】PHP物件
- js將物件轉換為字串程式碼例項JS物件字串
- 深入 Laravel Nova 教程例項Laravel
- 深入理解ES6 --- 物件物件
- Golang 物件導向深入理解Golang物件
- JVM中java例項物件在記憶體中的佈局JVMJava物件記憶體
- JAVA例項 陰陽曆演算法(轉)Java演算法
- 深入理解Python中的生成器Python