爲什麼我們需要Java中的抽象類?如果你永遠不會把它變成一個物體,爲什麼它首先呢?你如何使用它?爲什麼在那裏?我在抽象方法中想知道同樣的事情。我覺得它看起來像一個類似的概念,有一個超級類,沒有任何重要的子類可以做。爲什麼我們需要Java中的抽象類?
回答
抽象類可以用作其他類的模板類型。抽象類將爲所有擴展它的類提供通用功能。
例如:
Abstract Class Animal
所有的動物移動,呼吸和繁殖,從而可以將這些放入動物類。
現在
Concrete Class Dog, Cat etc.
已經提供這些基本功能。
這是一個很好很簡單的解釋。我喜歡那個答案。所以你可以使用抽象類的SUBCLASSES。抽象方法是相同還是不存在子方法? – user3314801
如果您滿意,您應該接受這個答案。 – nafizh
但是,如果聲明例如抽象「動物」上的「呼吸()」,甚至「呼吸()」聲明(沒有函數的「主體」),所以我們需要重新創建「呼吸()」 「狗」和「貓」,什麼是「動物」的好處呢? – Sushi
抽象類允許在類中提供一組方法的默認實現。由於它們是不完整的,因此它們不能被實例化和使用,但它們可以被子類化,以特定於特定實現的方式添加缺少的細節,並且可以實例化這些子類。
如果沒有抽象類,你將不得不提供你打算重寫的方法的虛擬實現...可以完成的任務,但是會有忘記實現其中一個的風險。讓一些方法保持完全抽象可以確保真正的實現必須填補空白,或者繼續自我抽象並迫使其後代這樣做。
這不是沒有語言無法生存的東西。但它非常有用。隨着您更加精通Java和OO設計,您會發現它有多麼有用。
(請注意,我們說同樣的話,基本上,你最後一次提出了這個問題。所以,如果你還在迷茫,你可能想更具體的瞭解到底發生了混淆你。)
的抽象類的很多用途,抽象類的主要目的是作爲基類,它可以被子類擴展以創建一個完整的實現。
例如,
你可能在你的程序中實現三個步驟,
- 行動
- 前幾步操作後進行
- 幾個步驟中的一些動作
所以在這種情況下,你可以用三種方法定義一個抽象類像這樣:
public abstract MyAbstractProcess {
public void stepBefore() {
//implementation directly in abstract superclass
}
public abstract void action(); // implemented by subclasses
public void stepAfter() {
//implementation directly in abstract superclass
}
}
另外,上面的抽象類Animal的例子也是一個很好的例子。
- 1. 爲什麼我們需要C++中的抽象類?
- 2. 爲什麼我們需要抽象類而不是虛擬類?
- 3. 爲什麼我們在上課時需要抽象類?
- 4. 爲什麼我們在抽象類存在時需要接口?
- 5. 爲什麼我們有抽象類時需要接口?
- 6. 爲什麼需要抽象類?
- 7. 爲什麼需要抽象類?
- 8. 爲什麼在我們的項目中需要接口層/抽象類?
- 9. 爲什麼我們在java中使用抽象類和抽象方法
- 10. 爲什麼要在Java中接口,如果我們有抽象類?
- 11. 什麼是算法中的抽象數據類型,爲什麼我們需要它們?
- 12. 爲什麼我們需要Java NIO Selector?
- 13. 爲什麼你需要知道抽象類的抽象方法是否抽象
- 14. 爲什麼我們需要包裝類
- 15. 我們什麼時候去Java中的接口或抽象類?
- 16. 從抽象類和具體類繼承有什麼區別?爲什麼我們需要後者?
- 17. 爲什麼我需要擴展抽象類中的另一個構造函數?
- 18. 什麼是伴侶對象,爲什麼我們需要它?
- 19. 爲什麼我們的C++類被強制抽象?
- 20. 爲什麼我們需要.htaccess的worpdress?
- 21. 爲什麼我們需要javascript中的自引用對象
- 22. 爲什麼我們需要Java和Applet中的JNLP文件?
- 23. 爲什麼我們需要Java 7中的鑽石算子?
- 24. 爲什麼我們需要java中的私有嵌套接口?
- 25. 爲什麼我們需要Java 3D中的Canvas?
- 26. 爲什麼我們需要分開Apply和Applicative類型的類?
- 27. 爲什麼我們不能在C++中爲抽象類創建對象?
- 28. 在面向對象的編程中,我們需要抽象嗎?
- 29. 爲什麼我們實現接口抽象類
- 30. DavLockDB:我們需要什麼?
@blunderboy - 相信我,這比他/她最後一次提問要溫和得多。 –
沒有多少證據顯示上次讀過答案,但至少有禮貌。 – keshlam
@keshlam在他/她有機會閱讀它之前可能已被刪除。我正在刪除這個問題時編輯了這個問題,希望能夠保存它,但是我太慢了。 –