多態通過分離做什麼和怎麼做,從另一個角度將介面和實現分離開來。 繼承允許將對象視為它自己本身的類型活基類型來加以處理。 方法調用綁定 綁定: 將一個方法調用同一個方法主體關聯起來。 前期綁定:在程式執行前進行綁定(如果有的話,由編譯器和連接程式實現)。 後期綁定(也叫動態綁定或運行時綁定):在運行時...
多態通過分離做什麼和怎麼做,從另一個角度將介面和實現分離開來。
繼承允許將對象視為它自己本身的類型活基類型來加以處理。
方法調用綁定
綁定: 將一個方法調用同一個方法主體關聯起來。
前期綁定:在程式執行前進行綁定(如果有的話,由編譯器和連接程式實現)。
後期綁定(也叫動態綁定或運行時綁定):在運行時根據對象的類型進行綁定(在執行期間判斷所引用對象的實際類型,根據其實際的類型調用其相應的方法)
Java中前期綁定的方法有:
static方法(構造方法屬於static方法,只不過static聲明是隱士的),
final方法(private方法屬於final方法)
- final方法可以防止其他人覆蓋該方法。final方法可以有效的“關閉”動態綁定。
(任何域訪問操作都是由編譯器解析的,因此也不是多態)
方法調用的順序
屬性、方法、構造方法和自由塊都是類中的成員,在創建類的對象時,類中各成員的執行順序:
1. 父類靜態成員和靜態初始化快,按代碼出現的順序依次執行。
2. 子類靜態成員和靜態初始化塊,按代碼出現的順序依次執行。
3. 父類的實例成員和實例初始化塊,按代碼出現的順序依次執行。
4. 父類的構造方法(如果沒有明確指出調用某個父類的構造器,就會預設調用父類預設構造器,如果不存在預設構造器,編譯器會出錯)
5. 子類實例成員和實例初始化塊,按代碼出現的順序依次執行。
6. 子類的構造方法。
(出處:lgfeng218)
編寫構造器的一條有效準則:(Java編程思想第四版中文P163)
“用儘可能簡單的方法使對象進入正常狀態,如果可以的話,避免調用其他方法”,在構造器內唯一能夠安全調用的哪些方法是基類中的final方法。
多態
多態的條件
1. 要有繼承
2. 要有重寫
3. 父類引用指向子類對象