回答
因爲另一個類可以擴展它,並且子類需要調用超類的構造函數。當它的具體子類將被實例化
所有包括抽象類可以有constructors.Abstract類構造函數的類會被調用初始化字段。
想象你的抽象類有字段x和y,並且你總是希望它們以某種方式初始化,而不管最終創建了什麼實際的具體子類。所以你創建一個構造函數並初始化這些字段。
現在,如果你有你的抽象類,兩種不同的子類,當你實例化它們自己的構造函數將被調用,然後父類的構造將被調用,字段將被初始化。
如果您不做任何事情,父項的默認構造函數將被調用。但是,您可以使用super關鍵字在父類上調用特定的構造函數。
實施明智的你經常會裏面的超級看到在子類的構造函數()語句,像:
public class A extends AbstractB{
public A(...){
super(String constructorArgForB, ...);
...
}
}
因爲抽象類有狀態(場),他們需要以某種方式初始化somethimes。
兩個原因:
1)抽象類具有constructors
當一個具體子類實例化的構造函數總是被調用。我們知道,當我們要實例化一個類時,我們總是使用該類的構造函數。現在,每個構造函數都會調用超類的構造函數,並隱式調用super()
。
2)我們知道構造函數也用於初始化類的字段。我們也知道抽象類可能包含字段,有時候他們需要使用構造函數以某種方式初始化。
Debmalya達斯(SCJP&SCWCD) – Debmalya
我想這個問題的根源在於,人們認爲,一個構造函數的調用創建的對象。事實並非如此。 Java無處宣稱構造函數調用會創建一個對象。它只是做我們想要構造函數做的事情,比如初始化一些字段......就這些。所以被調用的抽象類的構造函數並不意味着它的對象被創建。
- 1. 的Java抽象類的構造函數
- 2. 抽象類中的構造函數有什麼用處?
- 3. 在Java中爲抽象類創建構造函數有什麼用處?
- 4. 抽象構造函數java
- 5. Java:抽象類構造函數和this()
- 6. java抽象類,構造函數未在超類中調用,爲什麼?
- 7. 在Java的抽象類中使用構造函數有什麼意義?
- 8. 什麼是抽象類中的構造函數的使用php
- 9. 抽象類中的次構造函數的用例是什麼?
- 10. 抽象類中構造函數的用法是什麼?
- 11. 抽象類中的構造函數
- 12. 抽象類中的構造函數?
- 13. 抽象類中的構造函數?
- 14. 構造函數具有抽象類的對象作爲參數
- 15. 非法在java構造函數中有抽象類列表?
- 16. 抽象類的構造函數
- 17. 呼叫從抽象類子類構造函數在Java中
- 18. Java抽象構造函數問題
- 19. 抽象類的子類的Java構造函數
- 20. 爲什麼我需要擴展抽象類中的另一個構造函數?
- 21. 構造函數和抽象類中的java調用方法?
- 22. Java:抽象類中的直接構造函數
- 23. 通用抽象類構造函數
- 24. 抽象類和構造函數
- 25. 抽象類和構造函數
- 26. 抽象類,構造函數和接口
- 27. 抽象類,複製構造函數
- 28. 爲什麼它需要一個參數模擬抽象類的構造函數
- 29. 的Java:抽象泛型類構造函數的參數
- 30. 使用Java泛型的接口/抽象類的構造函數
退房這個問題澄清,http://stackoverflow.com/questions/260666/abstract-class-constructor-in-java –
您需要一種方法來構建子類的抽象類。從技術上講,抽象類上的公共構造函數實際上只是一個受保護的構造函數。 –