我被指派使用默认和参数构造函数创建一个类,但问题是,甚至可能吗?我不知道它是如何工作的......两者都应该为变量赋值
答案 0 :(得分:1)
当你在类中定义另一个构造函数时,你不再得到“通常的”默认构造函数(public和without arguments)。
但是,您可以将其添加回来:
class MyClass{
MyClass(String param){} // custom constructor
MyClass(){} // bring back the non-arg one
}
当然,使用new
创建对象实例时,您必须选择要调用的对象实例(不能同时使用两者):
MyClass instanceA = new MyClass("a string");
MyClass instanceB = new MyClass();
构造函数可以相互调用(使用this(parameters)
)或共享方法,如果它们中存在您希望保留在一个位置的常用功能。
答案 1 :(得分:1)
借用@bohemian的答案
public class Person
...
public Person() {
this("unknown", 0); // you can call another constructor
}
public Person(String nm, int ag) {
name = nm;
age = ag;
}
...
}
在此示例中,如果调用no-args构造函数,则unknown
和0
将传递给其他构造函数
答案 2 :(得分:1)
实际上,根据定义,你不能在Java中这样做.JLS§8.8.9,http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8.9说,“如果一个类不包含构造函数声明,那么隐式声明默认构造函数。”因此,只要添加任何构造函数声明,即使是无参数构造函数,也不会获得默认构造函数。