我知道你不能創建Abstract類的實例,並且Abstract類的子類可以繼承第一個Abstract類的繼承屬性,但是我不明白爲什麼Abstract類需要存在,當你擁有普通的Super類及其類時子類。什麼是抽象類的好處/應用?什麼是抽象類的使用/應用?
回答
abstract class Animal { }
class Dog extends Animal { }
class Cat extends Animal { }
如果可以實例化它,Animal
會是什麼?
當超類不打算被實例化時,你應該使用一個abstract
類:它作爲擴展類依賴的基礎,但它本身並不意味着什麼。
通過讓Animal
類充當Dog
和Cat
的基類,您可以在其中定義常見行爲,而不必在每個子類中重新定義它。考慮如Name
,Species
和FirstSighting
這些屬性:這些將在Cat
和Dog
中使用,那麼爲什麼不把它們放在基類中以避免額外的工作和不一致性問題?
另一方面,你不想創建一個新的Animal
:它沒有提到動物的類型。這就是爲什麼你做它abstract
。
什麼是downvotes? –
只要動物類沒有用處,它根本就沒有權利存在,無論它的摘要與否。 –
動物可以包含某些屬性,如「名稱」,「物種」,「第一次瞄準」等。您是否會在每個子類中重新定義它? –
抽象類/接口的主要目的是模擬抽象的問題 - 設計。然後真正的實現將根據抽象行爲。
抽象類可防止實例化「不完整」抽象實現。
例如,抽象類可能具有抽象方法而沒有任何實現。實際調用這些方法並不合適。
或者,抽象類可能沒有任何實際的抽象方法 - 但仍可能需要在子類API中添加其他功能,因爲它很有用。
abstract
關鍵字用於這兩個原因&防止抽象類被實例化。
- 1. 什麼是抽象類型?
- 2. 爲什麼使用抽象類
- 3. 使用抽象類中抽象類的引用抽象類c
- 4. 使用分部類而不是抽象類有什麼好處?
- 5. 什麼是抽象類中的構造函數的使用php
- 6. 爲什麼任何一種抽象都使用接口而不是抽象類?
- 7. 使用特徵優於抽象類的優點是什麼?
- 8. 抽象類中數據成員的使用情況是什麼
- 9. 什麼是在PHP中的抽象類?
- 10. 爲什麼HttpServletRequestWrapper類不是抽象的
- 11. 我應該使用什麼接口或抽象類?
- 12. 我應該使用抽象類還是使用類?
- 13. 爲什麼你需要知道抽象類的抽象方法是否抽象
- 14. 什麼是抽象數據類型(ADT)?
- 15. 爲什麼ClassLoader是一個抽象類?
- 16. 這是爲什麼抽象類在PHP
- 17. 什麼是抽象類和抽象方法?
- 18. 什麼是CI_Controller built_in類?不管它是抽象的還是不抽象的?
- 19. 使用抽象類
- 20. 何時使用接口和什麼時候使用抽象類
- 21. 抽象類中的次構造函數的用例是什麼?
- 22. 在什麼情況下,超類不應該是抽象的?
- 23. 抽象類中字段的可訪問性應該是什麼?
- 24. 抽象類中main方法的用法是什麼?
- 25. 專用接口或抽象類:什麼是我的選擇
- 26. 抽象類中構造函數的用法是什麼?
- 27. 爲什麼我們使用接口和抽象類,在什麼情況下應該使用abract類和接口
- 28. 爲什麼我們在java中使用抽象類和抽象方法
- 29. 什麼是抽象數據類型?它是Java中的類嗎?
- 30. 爲什麼要使用抽象接口?
面向對象編程的好處是什麼? –
詢問前先嚐試一下有什麼好處? – hexafraction
我已經完成了。看到你幾個視頻管等..只是告訴我什麼是抽象類,但不是與普通類相比的應用程序。 – user3013144