Think In Java 筆記3 Reusing Classes

Reusing Classes
通過創建新的類,不是從頭創建,可以用現有的類
用這個類但是不污染這個類的已存在的code達到這個目的的方法有兩種
1. 組合(composition):創建這個類通過創建已有的類的對象,這個類就相當於之前的類的組合
2. 繼承(inheritance):創建這個類繼承已有的類
父類(基類base class)的方法必須是public或者是private的不然子類如果不是同一個package的就不能訪問
3. 在創建子對象的時候,隱含創造了一個父類的對象在子類中,這時候會調用父類的constructor
4. 如果要調用有參數的父類的constructor,要在子類的constructor函數裏面最開頭寫上super(args);
5. 授權Delegation:就是在一個類中創建一個對象,然後寫方法,這個方法是調用那個對象的方法,有繼承有點像,這樣的好處是,你可以只調用其中部分的方法,而不是全部實現。

public class SpaceShipDelegation {
private String name;
private SpaceShipControls controls =new SpaceShipControls();
public SpaceShipDelegation(String name) {
this.name = name;
}
// Delegated methods:
public void back(int velocity) {
  controls.back(velocity);
}
}
  1. try finally:無論try是怎麼離開的,finally一定會執行
try {

}
finally{

}
  1. 和C++一樣,先創建的東西最後銷燬
    比如:先創建 shape 在創建 rect
    先銷燬 rect 再銷燬 shape
  2. 和C++不一樣,java在子類中重載(新加)了方法之後,父類的方法沒有隱藏,還是可以調用的,C++是會隱藏的。
  3. Overload是重載相當於新加一個函數,參數不一樣的,名字一樣的
  4. Override是覆蓋,相當於函數名字一樣,參數一樣,就是重寫父類的方法
  5. Composition VS inheritance :問問自己自己新寫的類要不要upcast to 基類。
  6. final關鍵詞相當於c中的const,可以先申明blank final就是先不賦值,然後在constructor中賦初值。
  7. 對於private方法,自動隱含添加final修飾詞
  8. 如果一個方法用了final那就不能重寫了(override)
  9. 一個類如果用了final就不能被繼承了
  10. 一個類如果有繼承的時候,初始化是這樣的順序
    1) 所有static的變量進行初始化,從父類的開始到子類的結束
    2) 父類正常變量被初始化按定義順序
    3) 父類constructor被調用
    4) 子類正常變量被初始化按定義順序
    5) 子類constructor被調用
發佈了35 篇原創文章 · 獲贊 0 · 訪問量 8455
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章