Java多態初體驗

來源:互聯網
上載者:User

Java多態初體驗本文面向Java初學者,我們在教材上經常會看到Java是多態的,可是一般的教科書只停留在理論上,很少有實際操作。現在把多態個概念用代碼簡單描述一下,由於本人水平有限,所以難免有不足之處。
    首先我們有這樣幾個類,電腦,個人電腦,膝上型電腦。

java 代碼
class Computer{   
       
    public void turnOn(){   
    }   
}  
現在有了電腦這個類,那麼個人PC,筆記本都是繼承他。

java 代碼
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()方法,而在父類中這個方法是空的,子類中各自有不同的實現,到這裡可能還不太明顯。如果有另外一個方法,要接受這些類作為參數,就像這樣

java 代碼
class Test{   
    public void go(Computer computer){   
         computer.turnOn();   
    }   
}  
這個方法接收的是基類參數,當然我們是可以把子類傳遞給方法的,也應該這麼做。

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.