這是面試中提出的問題。 如果一個類在java中有多個構造函數,什麼時候可以調用另一個構造函數,我們可以調用另一個構造函數嗎?在java中調用另一個構造函數
回答
你就可以了,我知道的語法是
this(< argument list >);
您也可以撥打通過
super(< argument list >);
父類的構造函數都這種調用只能作爲第一個語句來完成構造函數(所以你只能調用另一個構造函數,並且在其他任何事情完成之前)。
10你不能做任何需要引用的東西。 – 2010-03-03 19:18:00
它也必須在構造函數的第一行 – sixtyfootersdude 2010-07-11 00:51:11
是的,第一行所以它將是第一個被實現的 – Francis 2015-06-28 16:05:38
this(other, args);
這可能是誤導或錯誤!其他是什麼?你只需使用'this(args-required-by-constructor)'或'super(args-required-by-constructor)來調用另一個構造函數;' – 2010-03-03 19:15:13
例如:
public class FileDb {
/**
*
*/
public FileDb() {
this(null);
}
public FileDb(String filename) {
// ...
}
}
是的,你可以做到這一點。
看一看在ArrayList
實現,例如:
public ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
}
/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
this(10);
}
第二構造函數調用的第一個十的default capacity
。
僅供參考,這被稱爲telescoping/telescopic constructor pattern。
它在JLS 8.8.7.1 Explicit Constructor Invokations
- 可選的構造調用用關鍵字
this
(可能帶有明確的類型參數的開頭)開始討論。它們用於調用同一個類的替代構造函數。- 超類構造函數調用以關鍵字
super
(可能以顯式類型參數開頭)或主表達式開頭。它們用於調用直接超類的構造函數。
沒有一個答案是完整的,所以我加入這個填空白。
您還可以從另外一個構造函數在同一個班級,或調用超類,有以下限制:
- 它必須是代碼中調用構造函數的第一行。
- 它不能有任何明確或隱含的引用
this
。所以你不能傳遞一個內部類(如果它引用了任何實例方法,那麼是匿名的),或者是一個非靜態方法調用的結果作爲參數。
(如其他人所說)的語法是:
MyClass() {
someInitialization();
}
MyClass(String s) {
this();
doSomethingWithS(s);
}
- 1. ponylang:在另一個構造函數中調用構造方法?
- 2. 在Java中調用另一個類的構造函數
- 3. 從另一個構造函數調用默認構造函數
- 4. EasyMock:在java中構造一個構造函數調用
- 5. 構造函數可以在C++中調用另一個構造函數嗎?
- 6. 在另一個類中調用一個類的構造函數
- 7. 我與另一個構造函數調用構造函數有一個錯誤
- 8. 在java中調用繼承構造函數的構造函數
- 9. Java調用構造函數
- 10. Java構造函數調用
- 11. C++一個類的默認構造函數調用另一個類的另一個默認構造函數
- 12. 如何在javascript中調用另一個類的構造函數
- 13. C#從另一個主體調用一個構造函數
- 14. 如何在java中訪問另一個類的構造函數?
- 15. 構造函數中的Java調用setter
- 16. Java。隱式超級構造函數Employee()未定義。必須顯式調用另一個構造函數
- 17. Java ByteArrayInputStream隱式超級構造函數未定義。必須明確調用另一個構造函數
- 18. 在另一個構造函數中調用構造函數(並從cons.1中獲取修改後的變量)
- 19. 如何從構造函數中調用另一個Javascript文件中的函數?
- 20. 在Java中,方法/構造函數聲明能否出現在另一個方法/構造函數聲明中?
- 21. 一個拷貝構造函數調用
- 22. 是否有可能將構造函數放在另一個構造函數的構造函數中?
- 23. 如何使用構造函數的參數來調用C++中另一個類的構造函數?
- 24. 如何在其他構造函數中調用構造函數?
- 25. 在Java構造函數中調用超級函數
- 26. 從另一個類的構造函數調用方法C++
- 27. 我想調用另一個類的構造函數和方法
- 28. 構造函數中的調用基構造函數和其他構造函數
- 29. 確定一個構造函數調用其基類的構造
- 30. Java調用複製構造函數
你能澄清這個問題嗎?有多個構造函數可以創建不同的對象,並可以從其他類中調用。他們只是爲了這個目的而製造的。 – 2010-03-03 18:44:03
他意味着從另一個調用構造函數。 – Woot4Moo 2010-03-03 18:45:51
他問是否允許從另一個構造函數調用構造函數,或者每當一個類具有多個構造函數時,它是否允許調用構造函數 – Francis 2015-06-28 16:07:38