我有一个Student类,它有构造函数Student(int id, string name)
现在,我想在不触及构造函数的情况下创建Student Class的对象。我该怎么办?
赞Student std = new Student();
不是Student std = new Student(1, "Benjamin");
答案 0 :(得分:2)
创建default constructor,例如
Student();
在Java中,默认构造函数是指如果没有为类定义构造函数,则由编译器自动生成的nullary constructor。默认构造函数隐式调用超类的nullary构造函数,然后执行一个空体。此外,您可以自己编写。
请注意,根据您的编码设计和要求,可以有许多构造函数。说,
class Student {
// default constructor
public Student() {}
// one param constructor
public Student(int id) {
this.id = id;
}
// two param constructor
public Student(int id, String name) {
this.id = id;
this.name = name;
}
}
如果你有默认的构造函数,那么没有
Student std = new Student(1, "Benjamin");
您可以创建一个std
对象,如:
Student std = new Student();
答案 1 :(得分:1)
您必须创建无参数构造函数 - Student()
。如果您没有Student(int id, string name)
构造函数,编译器将自动创建一个空的无参数构造函数。
答案 2 :(得分:0)
你应该在你的类中创建第二个没有参数的构造函数(所谓的"默认构造函数"):
class Student {
int id;
String name;
// new constructor
public Student() {
}
// old constructor: we don't change it.
public Student(int id, String name) {
this.id = id;
this.name = name;
}
}
答案 3 :(得分:0)
您必须添加不带参数的构造函数。
请注意,这只是出于学术目的的解决方案:如果您不想创建没有参数的新构造函数,则还有另一种可能性。使用参数删除构造函数,如果自动执行此操作,则会将不带参数的默认构造函数添加到类中。显然,如果你这样做,你必须改变现有的代码,用不带参数的新调用替换旧的调用参数化构造函数!
答案 4 :(得分:0)
你可以这样做;如果你的类有默认的空构造函数和setter方法:
Student st = new Student();
st.setId(1);
.
..
答案 5 :(得分:0)
我有一个同样的问题,尽管事情是应该自动实现的默认构造函数应该允许对象不带参数。错误状态:无法解析构造函数。 :(
User user = new User();
user.setUsername(registerRequest.getUsername());
user.setPassword(registerRequest.getPassword());
user.setEmail(registerRequest.getEmail());
所以User();要求参数,并且我无法对用户应用所有其他代码行