在java中从一个构造函数调用另一个构造函数
这是采访中提出的问题。 如果一个类在java中有多个构造函数,那么我们可以从另一个构造函数中调用一个构造函数吗?何时调用?我指的是语法,如何调用?示例:在java中从一个构造函数调用另一个构造函数,java,constructor,Java,Constructor,这是采访中提出的问题。 如果一个类在java中有多个构造函数,那么我们可以从另一个构造函数中调用一个构造函数吗?何时调用?我指的是语法,如何调用?示例: this(other, args); public class FileDb { /** * */ public FileDb() { this(null); } public FileDb(String filename) { // ... } } 你可以,我知道的语法是 this(
this(other, args);
public class FileDb {
/**
*
*/
public FileDb() {
this(null);
}
public FileDb(String filename) {
// ...
}
}
你可以,我知道的语法是
this(< argument list >);
这个();
您还可以通过调用超级类的构造函数
super(< argument list >);
super();
这两个调用只能作为构造函数中的第一个语句来执行(因此,在执行任何其他操作之前,您只能调用另一个构造函数)。是的,您可以这样做
请查看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);
}
public数组列表(int initialCapacity){
超级();
如果(初始容量<0)
抛出新的IllegalArgumentException(“非法容量:”+
初始容量);
this.elementData=新对象[初始容量];
}
/**
*构造一个初始容量为10的空列表。
*/
公共数组列表(){
这(10);
}
第二个构造函数调用默认容量为10的第一个构造函数。
这在第二章讨论
- 替代构造函数调用以关键字
开始(可能以显式类型参数开头)。它们用于调用同一类的备用构造函数李>this
- 超类构造函数调用以关键字
(可能以显式类型参数开头)或主表达式开始。它们用于调用直接超类的构造函数super
没有一个答案是完整的,所以我加上这个来填补空白 您可以从同一类中的另一个构造函数调用一个构造函数,或调用超类,但有以下限制:
你能澄清这个问题吗?有多个构造函数以不同的方式创建对象,并且可以从其他类调用它们。他指的是从另一个构造函数调用构造函数。他问的是,当一个类有多个构造函数时,是否允许从另一个构造函数调用构造函数。这要么是误导,要么就是完全错误!其他的是什么?您只需使用
this(构造函数需要的参数)
或super(构造函数需要的参数)调用另一个构造函数代码>并且你不能做任何需要引用的事情。它也必须在构造函数的第一行,第一行,所以它将是第一个被实现的
MyClass() {
someInitialization();
}
MyClass(String s) {
this();
doSomethingWithS(s);
}