构造函数和clone以及在继承中
生活随笔
收集整理的這篇文章主要介紹了
构造函数和clone以及在继承中
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
構造函數
類實例的構造創建過程是:
1.屬性域被初始化為默認值(0,false,null)
2.按照在類聲明的順序初始化初始化語句和初始化塊.
3.執行構造函數
所以,一個默認的空的無參構造函數并沒有初始化類的實例域.因為實例域先于構造而初始化完畢了.- 構造函數無法被繼承
- 如果一個類沒有定義構造函數,編譯器會自動創建一個,如下:
也就是說自己定義一個無參無實現的構造函數和不寫構造函數沒有區別
- 繼承的子類的無參構造函數會自動調用父類的無參構造函數.
- 子類的構造函數總是需要調用父類的構造函數.實際上無參的構造函數,如果沒有顯式調用父類構造函數,編譯器就會自動調用super(),如下:
- 在構造函數中super(),或者this() 總是第一個執行(當然,super()和this() 不能共存于一個構造函數內).這是因為方法是在棧中調用執行的的,后調用的會先完成.
克隆clone
在子類實現覆蓋父類的clone() 方法時需要調用super();如:
@Override public Object clone() throws CloneNotSupportedException { return super.clone(); }為什么調用父類的clone() 就可以實現創建一個一樣狀態的新對象呢?
是因為Object.clone() 方法有一個默認實現:Creates and returns a copy of this object. The precise meaning of "copy" may depend on the class of the object. --jdk1.7
意思是: 哪個對象調用了這個方法就創建和返回這個對象的一份復制.
- 深拷貝:
轉載于:https://www.cnblogs.com/predisw/p/4847483.html
總結
以上是生活随笔為你收集整理的构造函数和clone以及在继承中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 结晶器或者连铸--流场-温度场-凝固--
- 下一篇: VC内存泄露检查工具:Visual Le