2013-05-04 36 views
-1

在抽象類中,我們可以使所有的方法都是抽象的,以便它可以像接口一樣工作,那麼爲什麼要使用接口呢?我能夠想出的一個原因是我們可以實現多個接口而不是擴展多個類。是否有涉及任何設計或性能相關的東西?爲什麼要使用接口,而我們可以使所有方法都是抽象的?

+3

你自己回答了這個問題...... – jlordo 2013-05-04 13:53:46

+1

把問題寫成答案,接受它,你就完成了。 – Maroun 2013-05-04 13:54:10

+0

http://stackoverflow.com/questions/10040069/abstract-class-vs-interface-in-java – 2013-05-04 13:54:57

回答

2

你已經得到了答案。使用接口,我們可以執行多種類型的行爲,因爲使用類不會爲你工作。例如,你可以強制一個類與IComparable以及INumerable一樣,但如果你想用類來完成它是不可能的。

0

設計明智的,最好的準則使用Interface你代碼的行爲/合同/功能定義(見List接口),並使用Abstract類,你必須atlease一些可重複使用(通過繼承)方法實現。

雖然所有方法都可以使用abstract,但在這種情況下,Interface是首選。

1

您已經確定了接口允許抽象類不允許的一件事。一個類不能擴展多個抽象類。

是否有任何設計或性能相關的東西?

沒有性能差異。

你可能會認爲,抽象類(實際上,所有類)的單一繼承限制使得這是「設計事物」。當然,它會嚴重限制你在面向對象設計中使用多態性。

(你也可以說,你不能遵循「編程接口」當你沒有界面的格言。但是,這是一個薄弱的論據......一個術語狡辯。)

相關問題