java实例化对象
摘要:分享牛,分享牛分享,java類加載機制,java實例化對象,java實例化對象機制,java基礎。
java是如何實例化對象的呢?以及實例化對象的先后順序是什么?下面我們以測試的方式說明.
1.1.?聲明父類
public class A { public A() { a1(); } public void a1() { System.out.println("a-a1"); } }1.2.?聲明子類
public class B extends A { int a=0; public B() { a=100; } @Override public void a1() { System.out.println("B a1():"+a); System.out.println("B a1()"); } }1.3.?測視類
1.3.1.?第一種情況
new?A();
輸出結果如下:
a-a1
因為a類默認繼承object所以實例化A類的時候,直接調用自身的a1()方法。
1.3.2.?第二種情況
new?A().a1();
輸出結果:
a-a1
a-a1
因為a類默認繼承object所以實例化A類的時候,直接調用自身的構造方法a1()方法。因為又直接調用a1()方法,所以一共調用了2次。
1.3.3.?第三種情況
new?B();
輸出結果:
B a1():0
B a1()
因為B類繼承a類,所以先去實例化父類A類,但是實例化A類的時候調用a1(),發現B類重寫了A類中的方法,所以調用B類的a1(),這個時候b還沒有被構造函數賦值,所以是默認的值。
1.3.4.?第四種情況
new?B().a1();
輸出結果:
B a1():0
B a1()
B a1():100
B a1()
因為B類繼承a類,所以先去實例化父類A類,但是實例化A類的時候調用a1(),發現B類重寫了A類中的方法,所以調用B類的a1()方法,實例化B對象實例的時候,構造方法已經初始化為100,所以第二次輸出有值。
分享牛原創(尊重原創 轉載對的時候第一行請注明,轉載出處來自分享牛http://blog.csdn.net/qq_30739519)
總結
- 上一篇: 梦到被一群猫狗围攻怎么回事
- 下一篇: 微软解决方案全景