《java編程思想》第七章復用類

Java實現(xiàn)代碼的復用主要有三種方式,一,組合,在新類中產(chǎn)生現(xiàn)有類的對象,復用了現(xiàn)有代碼的功能;二,繼承,采用現(xiàn)有類的形式并在其中添加新代碼,編譯器可以協(xié)助完成;三,代理,java并沒有內(nèi)置其實現(xiàn);

組合

將對象引用置于新類中即可

class A {
  ...
}
class B  {
  // 對A的引用,實現(xiàn)對其復用
  private A a = new A();
  ...
}

編譯器并不為每個引用都創(chuàng)建默認的對象,如果想初始化這些引用,可在在以下四個位置進行:

  1. 定義對象的地方。如以上代碼所示。
  2. 在類的構(gòu)造器中。
  3. 在就要使用這些地方之前。
  4. 使用實例初始化。

繼承

class A  {
  ...
}
// 通過extends關(guān)鍵字實現(xiàn)繼承,自動活動基類中所有的域和方法
class B extends A {
  ...
}

如果沒有明確指定從哪一個類繼承,則隱式從標準根基類Object進行繼承。
當創(chuàng)建了一個導出類的對象時,該對象包含了一個基類的子對象,這個子對象與用基類直接創(chuàng)建的對象是一樣的。

代理

代理是繼承與組合之間的中庸之道。

public class SpaceShipControls {
  void up(int velocity);
  void down(int velocity);
}
// 通過繼承實現(xiàn)SpaceControls代碼的復用,問題在于SpaceShip并不是真正的SpaceShipControls類型;
public class SpaceShip extends SpaceShipControls {
  public static void main(String args[]){
    SpaceShip spaceShip = new SpaceShip();
    spaceShip.up(100);
  };
}
// 通過代理實現(xiàn)SpaceShipControls的復用
public class SpaceShip {
  private SpaceShipControls spaceShipControls = new SpaceShipControls();
  private void up(int velocity) {
    spaceShipControls.up(velocity);
  }  
}

final關(guān)鍵字

  • 類中所有的private方法都隱式地指定為final的,對private方法添加final修飾詞不會增加任何額外的意義。
  • final類表明禁止該類被繼承,final類的所有方法都隱式是final的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,662評論 18 399
  • 第一章 對象導論 對象具有狀態(tài)、行為和標識。這意味著每一個對象都可以擁有內(nèi)部數(shù)據(jù)和方法,并且每一個對象都可以唯一地...
    niaoge2016閱讀 1,037評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評論 25 709
  • 嗯,今天是我生日,祝我生日快樂!生日愿望是再瘦十斤,順利通過期末考試,家人都能健康,我能開心的生活,是不是太多了。...
    lie_閱讀 166評論 5 1
  • 最近在使用ES6,所以手動實現(xiàn)了一個簡單的ES6 Promise對象來玩玩(如果有錯誤的地方,希望大家能夠不吝賜教...
    LitCigar閱讀 870評論 1 2

友情鏈接更多精彩內(nèi)容