thinking in java 第四天

第八章 多態

  1. 綁定:將一個方法調用同一個方法主體關聯起來叫做綁定
    • 前期綁定:在程序執行前進行綁定(由編譯器和鏈接程序實現),面向過程語言的默認綁定方式,例如C只有前期綁定一種
    • 後期綁定:在運行時根據對象的類型進行綁定,用於解決當有很多子類繼承某一個基類的時候,而且這些子類都有一個共同的方法,當實現多態時,會根據傳入的不同的子類調用相對應的方法
    • Java中除了static方法和final方法(private默認final)之外,其他方法都是默認後期綁定
      • 私有方法不能被覆蓋,子類中產生的是新的方法
      • 直接訪問某個域時,這個訪問就將在編譯期間進行解析
      • package com.zww.charpter8;
        class Super{
        	public int field = 0;
        	public int getField(){ return field; }
        }
        
        class Sub extends Super{//此時Sub有兩個field域
        	public int field = 1;
        	public int getField(){ return field; }
        	public int getSuperField(){ return super.field; }
        }
        
        public class FieldAccess {
        
        	public static void main(String[] args) {
        		// TODO Auto-generated method stub
        		Super sup = new Sub();
        		System.out.println(sup.field);//0
        	}
        
        }
      • 靜態方法是與類,而並非與單個的對象相關聯的
  2. 構造器內部一般不要使用多態
  3. 協變返回類型:表示在導出類中的被覆蓋方法可以返回基類方法的返回類型的某種導出類型
  4. RTTI
    • Java中所有的轉型都會被檢查
    • C++:dynamic_cast<>

第九章 接口:接口和內部類爲我們提供了一種將接口與實現分離的更加結構化的方法

  1. 抽象類(相當於c++中的純虛函數):包含抽象方法的類,當然也可以定義一個沒有抽象方法的抽象類
  2. 接口:產生一個完全抽象的類,根本沒有方法實現
    • 可以包含域,但是域都是static和final的
    • 方法自動爲public
  3. 策略模式:創建一個能根據所傳入參數對象的不同而具有不同行爲的方法,具體可見後續的設計模型系列
  4. 適配器模式:適配器中的代碼將接受你所擁有的接口,併產生你所需要的接口
  5. 使用接口的原因:一是爲了能夠向上轉型爲多個基類型(接口可以實現多重繼承);二是防止客戶端創建其對象
  6. 接口之間是繼承關係,extends
  7. 在接口中定義的域不能是"空final",但是可以被非常量表達式初始化,如rand.nextInt
  8. 接口可以嵌套在類或者其他接口中,比較混亂,各種限制被嚴格執行,可見page185頁
  9. 工廠方法設計模式:生成遵循某個接口的對象
發佈了28 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章