我知道,除了使用匿名類方法,我們不能在Java中實例化一個接口或抽象類,但是它背後的原因是什麼原因?爲什麼我們不能在沒有匿名類方法的情況下在java中實例化一個接口或一個抽象類?
5
A
回答
13
您不能實例化接口或抽象類,因爲它會違背面向對象的模型。
接口代表合同 - 承諾接口的實現者將能夠完成所有這些事情,履行合同。
抽象類是一個類似的想法,因爲它們代表一個未實現的契約,一個承諾能夠做事,除了不同於接口,他們有一些函數或字段已定義但需要填寫才能使用。
簡單地說,在一個好的面向對象的程序中,你永遠不應該想要實例化一個抽象類或接口。如果你這樣做,設計可能是錯誤的。 (匿名類實際上是非抽象的實例化,只是它們不需要被賦予一個名稱,所以它們看起來是'原始接口',但它們實際上是沒有名稱的接口的實現。這是我的理解,至少)
3
這是一個沒有更深層次概念的基本解釋。
Interface
沒有實現的方法,所以沒有目的的實例爲「無」時會發生調用一個方法Abstract
類可以有abstract
方法的聲明,這就像沒有實現一個接口方法。
1
相關問題
- 1. 類型是一個接口或抽象類,不能實例化
- 2. 無法創建類型爲X的實例。類型是一個接口或抽象類,不能實例化
- 3. 爲什麼抽象類和接口不能被實例化?
- 4. 我可以在實例化一個匿名類時實現一個接口嗎?
- 5. 爲什麼我們使用接口和抽象類,在什麼情況下應該使用abract類和接口
- 6. 有沒有辦法在不調用__init__的情況下實例化一個類?
- 7. 有沒有什麼辦法來實例化一個匿名的內部類?
- 8. PHPUnit:在沒有具體方法的情況下測試一個抽象類
- 9. 我們什麼時候去Java中的接口或抽象類?
- 10. 抽象類繼承另一個抽象類和實現一個接口,都具有相同的方法簽名
- 11. 如何在不實例化的情況下引用另一個類的方法?
- 12. 爲什麼我不能實例化一個從匿名對象推斷類型的泛型類?
- 13. 如何在Kotlin中創建一個匿名類的抽象類的實例?
- 14. 聲明一個接口並在一個抽象類的類中實現Java
- 15. Dart:我不能在另一個類中實例化一個類
- 16. 如何匿名實例化存儲在Java類對象中的抽象類?
- 17. 爲什麼在接口爲什麼不能在抽象類
- 18. 爲什麼我可以在不重寫所有抽象方法的情況下實例化派生自抽象類的類?
- 19. 如何在沒有實例化對象的情況下建立Java類類型?
- 20. 在什麼情況下你會更喜歡沒有方法的抽象類?
- 21. 爲什麼我不能在類定義中實例化同一類的對象
- 22. 爲什麼我不能有一個私人的抽象方法?
- 23. 爲什麼我們在java中使用抽象類和抽象方法
- 24. 爲什麼我們不能在WCF中使用抽象類而不是接口?
- 25. 有沒有辦法強制派生類來實現一個抽象類或嵌套在基類中的接口?
- 26. 的Java:方法來實例化一個特定的子類的抽象類
- 27. 爲什麼要在Java中接口,如果我們有抽象類?
- 28. 爲什麼我們在抽象類存在時需要接口?
- 29. 爲什麼我們實現接口抽象類
- 30. 爲什麼我可以實例化這個抽象類?
你的界面是否有任何代碼可供使用? – ChiefTwoPencils