예를 들어, 웹페이지에서 회원가입을 할 때 아이디/패스워드를 누르면 나라는 정보가 객체로 되어서
넘어온 파라미터로 객체가 초기화가 된다.
생성자 만들기 예제
package ch06;
public class Student {
public int studentNumber;
public String studentName;
public int grade;
public Student(int studendNumber,String studentName,int grade) {
//studentNumber=studentNumber;
//변수는 가장 가까운 변수를 찾기 때문에, 매개 변수에다가 매개 변수를 넣게 된다.
//우리는 멤버 변수에 넘어온 값을 대입하고 싶다 (=생성자의 역할)
this.studentNumber=studentNumber;
this.studentName=studentName;
this.grade=grade;
}
public String showStudentInfo() {
return studentName + "학생의 학번은" + studentNumber + "이고, " + grade + "학년입니다.";
}
}
this를 통해 각자 다른 변수를 가리킨다.
그런데 이렇게 생성자를 만들어버리면...?
StudentTest.java 파일에서 에러가 난다.
생성자가 없어야 디폴트 생성자가 존재할 수 있는데...
그렇다면 해결 방법은?
기본 생성자도 같이 써주지 뭐~!
오류가 사라졌다!
이것이 바로 생성자가 여러 개 있는... 생성자 오버로딩
최종 코드
StudentTest.java
package ch06;
public class StudentTest {
public static void main(String[] args) {
Student studentLee=new Student(); //디폴트 생성자
//클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어 주는데
//우리가 생성자를 만들어버렸다.
System.out.println(studentLee.showStudentInfo());
Student studentKim=new Student(123456,"Kim",3);
System.out.println(studentKim.showStudentInfo());
}
}
Student.java
package ch06;
public class Student {
public int studentNumber;
public String studentName;
public int grade;
public Student() {
}
public Student(int studendNumber, String studentName, int grade) {
// studentNumber=studentNumber;
// 변수는 가장 가까운 변수를 찾기 때문에, 매개 변수에다가 매개 변수를 넣게 된다.
// 우리는 멤버 변수에 넘어온 값을 대입하고 싶다 (=생성자의 역할)
this.studentNumber = studentNumber;
this.studentName = studentName;
this.grade = grade;
}
public String showStudentInfo() {
return studentName + "학생의 학번은" + studentNumber + "이고, " + grade + "학년입니다.";
}
}
멤버 변수에 각각 값을 대입해 초기화하여도 되고, 생성자를 통해 초기화 해도 된다. 방법이 2가지라는 것!