亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于abstract class,子類對象實例化的問題,請教大家!

關于abstract class,子類對象實例化的問題,請教大家!

素胚勾勒不出你 2018-07-22 09:08:49
public abstract class Demo {    public Demo()    {        this.print();    }        public abstract void print();}public class DemoImple extends Demo{    private int x = 10;    public DemoImple(int x)    {        this.x = x;    }    public void print() {        System.out.println("x=" + this.x);    }}這個case里面,最后的結果是:x=0給出的解釋是:通過子類對象來進行實例化。不清楚的地方:1、 new DemoImple(100); //這里不是傳遞了數值100嗎?為什么會是0呢 ?2、之所以有輸出,是不是調用了父類,即抽象類Demo的構造方法?實際調用的子類的print() 方法?中間調用機制或是過程是怎樣的?public class CaseDemo09 {    public static void main(String[] args) {        new DemoImple(100);    }}
查看完整描述

1 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

用java做了下試驗,說一下我得到的結論,不過我也不是很確定:

調用子類的構造器的時候,首先會調用父類構造器,所以這個時候x的值還沒有變成100;

然后,為什么不是10而是0呢,我在子類構造器中顯式調用了super()來調用父類構造器,然后在這個地方斷點,發現在調用父類構造器的時候x的值是0,而不是10,所以這個時候我覺得成員變量還沒有初始化(這個就是我說的不確定的地方,雖然試驗結果證明了我的說法,但沒理解原理),


查看完整回答
反對 回復 2018-07-23
  • 1 回答
  • 0 關注
  • 711 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號