参数化构造函数Java

时间:2017-08-21 14:27:29

标签: java constructor

在参数化构造函数中,为什么我们再次需要变量声明。

如下面的代码

声明了

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();  
   }  
}  

2 个答案:

答案 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
    }
}