这是面试中提出的问题。 如果一个类在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