雖然經歷本網站上的答案,我遇到了這樣一行說我們真的需要類來實現Java中的多態嗎?
其實,你完全不
此評論被評爲了需要多態類。 我很清楚
重寫方法是Java實現多態的「一個接口,多個方法」方面的另一種方法。方法重載支持多態,因爲它是Java實現單接口多種方法範式的一種方式。
我不認爲除了通過類,我們可以在Java中實現多態。如果不是這樣,有人可以用一個很好的例子來闡述嗎?
雖然經歷本網站上的答案,我遇到了這樣一行說我們真的需要類來實現Java中的多態嗎?
其實,你完全不
此評論被評爲了需要多態類。 我很清楚
重寫方法是Java實現多態的「一個接口,多個方法」方面的另一種方法。方法重載支持多態,因爲它是Java實現單接口多種方法範式的一種方式。
我不認爲除了通過類,我們可以在Java中實現多態。如果不是這樣,有人可以用一個很好的例子來闡述嗎?
多態性就是許多(多)事物採取相同形式或形狀(變形)的能力。術語本身在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
這樣的事情需要類。
不,你不能實現它沒有類 – Ashish 2014-09-27 05:50:16
[這個問題](http://stackoverflow.com/questions/8355912/overloading-is-compile-time-polymorphism-really)有一個答案,試圖區分「編譯時間「從」運行時間「多態性。這在某種程度上很有趣。但是當有人談論OOP中多態性的重要性時,他們只是談論運行時多態性,因爲那種多態性爲我們提供了減少耦合等所有優點,使得OOP成爲一個好主意。重載不會給你。 – ajb 2014-09-27 06:09:00