人們可以解釋我應該在哪種情況下使用接口,並且我應該在哪種情況下更喜歡抽象類...?請記住,我並不是要求Interface和Abstract類有所區別。何時使用接口和什麼時候使用抽象類
回答
我們必須首先推斷。如果我們必須在該類中編寫一些常用功能,那麼只有這樣才能進入抽象類。否則使用界面。因爲我們可以實現接口的數量,但是我們只能擴展一個類,所以爲了將來你必須去接口而不是抽象類。
還有其他用途的繼承比共享通用代碼。 –
請解釋我所以我會得到更多的解釋 –
[閱讀此問題](http://stackoverflow.com/questions/479142/when-to-use-an-interface-instead-of-an-abstract-class-and - 反之亦然),另一個鏈接... –
在以下情況下使用Abstract class
:您有一些必須在一個地方實現的通用功能(方法),其他具體類可以使用它。
在以下情況下使用Interface
:沒有共同的功能。每個具體類都有自己的功能實現。
我建議要堅持以下原則:
- 只用一個抽象類,如果你需要
code-reuse
- 限制能見度抽象類定義的包
否則使用接口和委派。但正如軟件設計一樣,你必須爲每個具體情況做出正確的決定。如果您有必須應用的限制/規則,但需要一定的靈活性,請考慮使用策略模式而不是繼承。
抽象類的問題是,你不能從多於一個繼承。因此,如果你需要一個類型爲is
的類型爲A
和B
並且都是抽象類,那麼你如何實現這一點?接口可以被任何其他類型無限制地實現。
如果您發現有任何是對象之間的關係可以用abstract
例如:Bird, Aeroplane, Paper Rocket
這些都是可飛的,但有這些對象之間沒有任何Is a relationship
,所以你可以在這裏使用interface
代替abstract
, 因爲鳥,飛機和紙火箭都可以飛行,但飛行的方式是不同的。
當然谷歌還有很多不同之處。
- 1. 什麼時候使用抽象calss和何時使用接口
- 2. 什麼時候去接口,什麼時候去抽象類
- 3. 何時使用抽象類和接口?
- 4. 何時使用抽象類和接口
- 5. 什麼時候在java和android中使用接口和抽象類?
- 6. 何時使用抽象類和何時使用接口
- 7. 什麼時候應該去接口,什麼時候去抽象類?
- 8. 何時使用抽象類或接口?
- 9. 不知道什麼時候使用抽象屬性,什麼時候不使用
- 10. 什麼時候使用擴展/抽象和實現/在PHP接口
- 11. 我們什麼時候去Java中的接口或抽象類?
- 12. 抽象類和接口有什麼區別?你想什麼時候使用它們?
- 13. 什麼時候使用__proto__和什麼時候使用原型
- 14. 什麼時候使用Ruby和什麼時候使用PHP
- 15. php:何時使用抽象和接口類?
- 16. 爲什麼我們使用接口和抽象類,在什麼情況下應該使用abract類和接口
- 17. 爲什麼要使用抽象接口?
- 18. 使用抽象和接口
- 19. 使用抽象類和接口
- 20. 使用接口和抽象類
- 21. 正確使用接口和抽象類
- 22. 使用接口和抽象類
- 23. 我們什麼時候使用接口擴展接口
- 24. 什麼時候使用流中的類型別名接口?
- 25. 有人可以給我一個什麼時候抽象類和接口必須被使用的想法嗎?
- 26. 爲什麼任何一種抽象都使用接口而不是抽象類?
- 27. 什麼時候應該使用AWS,什麼時候不使用
- 28. intn_t什麼時候使用它,什麼時候不使用
- 29. 什麼時候使用ByteString,什麼時候不使用?
- 30. 我什麼時候需要使用抽象方法?
請參考此問題http://stackoverflow.com/questions/12993123/confused-about-java-interface/12995321#12995321 –
我想說的是:「有利於繼承協作」,這幾乎可以解釋爲意味着抽象類是從不需要的...... –
抽象類在很多情況下都很有用......您必須瞭解哪種情況最適合解決問題。 –