2014-09-27 96 views
1

雖然經歷本網站上的答案,我遇到了這樣一行說我們真的需要類來實現Java中的多態嗎?

其實,你完全不

此評論被評爲了需要多態類。 我很清楚

重寫方法是Java實現多態的「一個接口,多個方法」方面的另一種方法。方法重載支持多態,因爲它是Java實現單接口多種方法範式的一種方式。

我不認爲除了通過類,我們可以在Java中實現多態。如果不是這樣,有人可以用一個很好的例子來闡述嗎?

+0

不,你不能實現它沒有類 – Ashish 2014-09-27 05:50:16

+0

[這個問題](http://stackoverflow.com/questions/8355912/overloading-is-compile-time-polymorphism-really)有一個答案,試圖區分「編譯時間「從」運行時間「多態性。這在某種程度上很有趣。但是當有人談論OOP中多態性的重要性時,他們只是談論運行時多態性,因爲那種多態性爲我們提供了減少耦合等所有優點,使得OOP成爲一個好主意。重載不會給你。 – ajb 2014-09-27 06:09:00

回答

3

多態性就是許多(多)事物採取相同形式或形狀(變形)的能力。術語本身在this answer中有更深入的解釋。

在C++中,例如,這可以很容易地做到無類:

long getNum (int x) { return x + 1; } 
long getNum (long x) { return x - 1; } 

做到這一點,你會得到與兩行完全不同的結果:

long x = getNum (1); 
long y = getNum (1L); 

你可以在使用靜態方法的Java中,完全是,根本不涉及任何類,但這有點浪費語言:

public class Test { 
    public static long getNum (int x) { return x + 1; } 
    public static long getNum (long x) { return x - 1; } 
    public static void main(String[] args) { 
     System.out.println (getNum (1)); 
     System.out.println (getNum (1L)); 
    } 
} 

的輸出是:

2 
0 

現在你會發現,有實際上在Java代碼中我張貼的一類,但是,這不是做多態的要求,它的更多的是要求Java語言要把的所有東西都嵌入到一個類中。如果您訂閱使多態依賴於類,這也意味着像變量賦值和增量i這樣的事情需要類。

+0

沒有這個例子使它依賴於類測試 – 2014-09-27 05:57:38

+0

@ShirgillAnsari,請參閱我的最後一段。 – paxdiablo 2014-09-27 05:58:00

+0

@paxdiablo你的回答是合理的:) – Muhammad 2014-09-27 06:10:16

相關問題