多態及實現方式


一,多態的含義

在面向對象的思想中,抽象,封裝,繼承,多態這幾個詞已經是我們經常見到的了。首先,多態是在繼承的基礎上形成的,多態是指不同的子類在繼承父類后分別都重寫覆蓋了父類的方法,即父類同一個方法,在繼承的子類中表現出不同的形式。多態成立的另一個條件是在創建子類時候必須使用父類new子類的方式。如果一個語言只是支持類而不是支持多態的,那么該語言就不能說是面向對象而僅僅是基於對象。

二,多態的具體實現

如果對多態的概念理解不清楚,可以舉一幾個例子幫助理解

第一個例子:該例子出自百度百科,鏈接地址

public interface Parent//父類接口
{
    public void simpleCall();
}
public class Child_A implements Parent
{
    public void simpleCall();
    {
    //具體的實現細節;
    }
}
 
public class Child_B implements Parent
{
    public void simpleCall();
    {
    //具體的實現細節;
    }
}

 
 
Parent pa = new Child_A();
 
pa.simpleCall();

顯然是調用Child_A的方法;而

 
Parent pa = new Child_B();
pa.simpleCall();

則是在調用Child_B的方法。

所以,我們對於抽象的父類或者接口給出了我們的具體實現后,pa 可以完全不用管實現的細節,只訪問我們定義的方法,就可以了。事實上,這就是多態所起的作用。

 
 
 
 
第二個例子感覺也很容易理解,該例子出自百度知道,鏈接地址
 
雞是所有其它雞的基類, 定義了一個方法shape(), 此方法能指明雞的形態. 所有的子類[火雞,山雞,田雞等],都有這個shape方法, 表明自己的形態,如果用下面的方法定義我需要具體的雞,

[基類 引用 = 實現類的對象]

for example:

雞 a = new 火雞();

雞 a = new 田雞();

雞 a = new 山雞();

雞 a = new 母雞();

當我使用的時候, 我采用 a 這個引用,

a.shape(), 就會得到雞的形態.

如果我定義的是

雞 a = new 火雞();

那么a.shape得到的是火雞的形態, 而不需要用具體的

火雞 a = new 火雞(); 再通過a.shape得到火雞的形態
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM