国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JAVA基礎-子類繼承父類實例化對象過程

2019-11-15 00:12:14
字體:
來源:轉載
供稿:網友
java基礎-子類繼承父類實例化對象過程之前在項目中碰到這樣一個問題:

  類B繼承了類A,B在實例化的時候,A的構造方法中調用了B的某個方法,并且B的方法中對B的成員屬性進行了初始化,然后最后得到的B對象的成員屬性為空。

  代碼場景如下:

  

  這里B new出來后s會被“s = null”覆蓋A中調用init的值,A中調用的方法若被子類覆蓋,那么構造過程中雖然是先構造A對象,但是A對像調用的方法卻是子對象的方法,然后調用B的代碼塊,構造方法。

  這里為了不然S=null覆蓋原來的初始化值,我們可以去掉代碼塊中s的初始化過程。

我們來詳細分析下子類構造過程中,代碼的執行過程

  圖例:

  

  這是一個父子類的模型,中間有靜態代碼塊、初始化代碼塊、構造方法、成員方法,那么構造TT2()的過程如下:

  new TT2()->new TT1()-> static tt1 1-> static tt1 2-> tt1List = new ...-> tt1 constructor->tt2 static tt2 1-> tt2 static tt2 2->list = null-> tt2 contructor->END

  這樣可能不是太清晰,我們用圖來標注下:

  

  輸出結果如下:

  

  總結:累的加載過程不管多么復雜,總是按照-靜態代碼塊->普通代碼塊->構造方法,這個順序執行的,按照順序一步步分析,將程序結構捋清楚就能避免不必要的錯誤。

  ps:內部類對外部類屬性的調用情況-內部類在使用外部類成員的時候,構造內部類時,會自動給內部類添加外部類的應用,內部類就是通過這個引用調用的外部類中的方法。


上一篇:Spring(3.2.3)

下一篇:Spring(3.2.3)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修文县| 闸北区| 宜春市| 澎湖县| 台东市| 沙洋县| 百色市| 繁昌县| 马山县| 安乡县| 邵阳县| 丘北县| 南昌县| 禄劝| 阿巴嘎旗| 鄂托克前旗| 余庆县| 平阳县| 孝义市| 无锡市| 台湾省| 五家渠市| 南皮县| 县级市| 壶关县| 丽江市| 丰宁| 南木林县| 安阳市| 类乌齐县| 海宁市| 通化市| 南陵县| 通渭县| 湟中县| 云安县| 海兴县| 长岭县| 东台市| 呈贡县| 宜昌市|