在参数化构造函数中,为什么我们再次需要变量声明。
如下面的代码
声明了 int id;
,然后再在构造函数int i..id=I;
class Student4{
int id;
String name;
Student4(int i,String n){
id = i;
name = n;
}
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
Student4 s1 = new Student4(111,"Karan");
Student4 s2 = new Student4(222,"Aryan");
s1.display();
s2.display();
}
}
答案 0 :(得分:3)
好吧,您可能会遇到一种情况,根据您拥有的信息,您可以通过多种方式对对象进行实例化。
对于这门课,你可以有几个:
Student4(int i,String n){
this.id = i;
this.name = n;
}
Student4(int i) {
this.id = i;
this.name = "";
Student4(String n)
this.name = n;
}
这称为重载构造函数。
答案 1 :(得分:2)
这不是"重新声明"变量,而是一个赋值,这就是参数的工作方式。
我认为你很困惑,因为它在同一个班级,而且似乎你从未使用过id
变量,而是在创建一个新学生时。< / p>
public Class Student {
private int id;
private String name;
Student() {
}
Student(int i, String n) {
this.id = i;
this.name = n;
}
//Add here getters & setters
}
public Class ClassRoom {
public static void main (String args[]) {
Student student1 = new Student(1, "John");
Student student2 = new Student(2, "Sarah");
System.out.println(student1.getId()); //This should print 1
System.out.println(student2.getId()); //This should print 2
//You may achieve the same result as follows:
Student student3 = new Student();
student3.setId(3);
student3.setName("George");
System.out.println(student3.getId()); //This should print 3
}
}