程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 初學Java語言之多態初體驗

初學Java語言之多態初體驗

編輯:關於JAVA

首先我們有這樣幾個類,電腦,個人電腦,筆記本電腦。

class Computer{

  public void turnOn(){
  }
}

現在有了電腦這個類,那麼個人PC,筆記本都是繼承他。

class PC extends Computer{
  public void turnOn(){
    System.out.println("PC has turn on");
  }
}

class NB extends Computer{
  public void turnOn(){
    System.out.println("NB has turn on");
  }
}

我們看到,每個類都有一個 turnOn()方法,而在父類中這個方法是空的,子類中各自有不同的實現,到這裡可能還不太明顯。如果有另外一個方法,要接受這些類作為參數,就像這樣

class Test{
  public void go(Computer computer){
     computer.turnOn();
  }
}

這個方法接收的是基類參數,當然我們是可以把子類傳遞給方法的,也應該這麼做

go(new PC());
go(new NB());

這樣他就會去調用具體子類的turnOn()方法,所以這兩次調用的輸出是不一樣的.如果不用基類作為參數,我們想調用每個子類的turnOn()方法,那麼就要些兩個方法體一樣的go()而接收不同的參數的重載。

public void go(PC computer){
     computer.turnOn();
  }

public void go(NB computer){
     computer.turnOn();
  }

這樣些也是正確的,但是這樣會產生很多重復代碼,而且也不易維護,當然這只是多態中最基本的一個部分,Java多態機制還有很多特性,關於這些建議大家看看 java編程思想(think in java)這本書,裡面講的很詳細,這裡只是很簡單的描述了一下,還望個各位高手不要見笑。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved