Q
類中的抽象方法
-1
A
回答
2
因爲它不能直接實例化了。此外,如果您不將該類本身標記爲abstract
,則會出現編譯器錯誤。
0
一旦方法是抽象的,就聲明它沒有實現。你會如何建議VM實例化該類的一個實例?
2
首先,我要猜測你提到的博客實際上是在討論C++。在Java中,在用abstract關鍵字聲明的類中聲明抽象方法是一個編譯器錯誤。隨着中說,考慮這個(錯誤)代碼:
class A
{
abstract void foo();
}
A a = new A();
a.foo(); //Whoa! what are we supposed to do??!
如果A
已被宣佈爲抽象(如將在真正的代碼需要),這本來是不可能實例化。
如果某個類的任何部分缺失(即聲明爲抽象類),則該類必須是抽象的,因爲部分不能使用。
在C++中,沒有abstract
關鍵字 - 如果一個類具有任何抽象方法(在C++中稱爲純虛函數),則該類是自動抽象的。
另一方面,在Java中,如果使用關鍵字abstract
聲明一個類只是抽象的。但是,如果有任何抽象方法,則需要此關鍵字,因此實際上兩個系統之間的實際差異很小。在兩種語言中,如果一個類具有任何抽象方法,則該類必須是抽象的:在C++中,這只是如何定義抽象類的;而在Java中,它是通過關鍵字abstract
的機制來實現的。
0
抽象方法是爲方法定義合約但不實現該功能的方法。
要用不能滿足定義的合同的方法實例化一個類,因爲沒有實現將無法工作。因此抽象方法意味着你不應該能夠實例化類。
0
當其方法的任何方法聲明爲abstract時,類自動變爲抽象類。
有人可以解釋一下當我們使用 只有一個抽象方法時,爲什麼整個類變得抽象。
該類必須聲明爲Abstract,因爲編譯器需要一個正文類的方法,否則會拋出錯誤。因此,無論你寫的方法體或類聲明摘要
例子:
class SomeClass{
// Method without body
public void SomeMethod();
public static void main(String[] args) {
}
}
當您嘗試編譯它,您將獲得:
SomeClass.java:4: missing method body, or declare abstract
public void SomeMethod();
相關問題
- 1. 建議從抽象類中的方法調用抽象方法
- 2. C#:抽象類中的抽象和非抽象方法?
- 3. 抽象類非抽象方法調用
- 4. 抽象類和抽象方法
- 5. 抽象類沒有抽象方法
- 6. C++:用抽象方法創建抽象類並重寫子類中的方法
- 7. 在抽象類中調用非抽象類方法
- 8. 在抽象類中使用抽象類時如何實現抽象方法
- 9. 抽象類/方法實現
- 10. 使用抽象類方法
- 11. 抽象類方法聲明
- 12. 抽象類和方法
- 13. 抽象類工廠方法
- 14. 具有抽象類參數的抽象方法的Java抽象類
- 15. 虛擬類中的抽象方法
- 16. 抽象類中的具體方法
- 17. C#接口中的方法,抽象類
- 18. 抽象類(C#)中的部分方法
- 19. 抽象類中的泛型方法
- 20. 抽象類中的受保護方法
- 21. 編號分類中的抽象方法
- 22. 抽象方法重寫抽象方法
- 23. 從抽象類中的回調調用抽象方法
- 24. 類不抽象,也不重寫java.util.timertask中的抽象方法run()
- 25. 非抽象類不能覆蓋Comparable中的抽象方法compareTo?
- 26. 抽象類的方法覆蓋另一個抽象類
- 27. 如果無法創建抽象類的新對象,抽象類中的非抽象方法有什麼意義?
- 28. 如何使用抽象方法測試抽象類中的方法?
- 29. 抽象類的抽象方法與java中接口的抽象方法的區別
- 30. 類不抽象,不會在抽象方法中覆蓋
你的標題暗示的東西,不存在。如果你有一個抽象方法,那麼這個類必須被聲明爲抽象的(這意味着在'class'之前使用'abstract'關鍵字)。 –