– 생성자
자바에서 생성자는 객체를 초기화하는 특별한 종류의 메서드입니다. 객체가 생성될 때 자동으로 호출되며, 주로 객체의 초기 상태를 설정하는 데 사용됩니다.
생성자는 클래스의 이름과 동일하며, 반환 값이 없고, 리턴 타입을 명시하지 않습니다. 객체를 생성할 때 new
키워드와 함께 호출되며, 해당 클래스의 인스턴스를 만들고 초기화합니다.
생성자는 기본 생성자와 매개변수가 있는 생성자로 나뉩니다. 기본 생성자는 매개변수가 없는 생성자로, 클래스에 명시적으로 정의되지 않을 경우 자동으로 생성됩니다. 매개변수가 있는 생성자는 객체를 생성할 때 필요한 매개변수를 받아들이고 초기화합니다.
– constructor
- 생성자 기본 문법 <class_name>([<argument_list]){[<statements]}
- 객체를 생성할 때 new 키워드와 함께 사용 – new Student();
- 생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new 와 함께 호출 됨
- 객체가 생성될 때 변수나 상수를 초기화 하거나 다른 초기화 기능을 수행하는 메서드를 호출 함
- 생성자는 반환 값이 없고, 클래스의 이름과 동일
- 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private 으로 선언되는 경우도 있음
public class Student {
int studentId;
String studentName;
String studentAddress;
public Student(int studentId, String studentName){
this.studentId = studentId;
this.studentName = studentName;
}
public void showStudentInfo(){
System.out.println(studentId + "," + studentName + ',' + studentAddress);
}
public String getStudentName(){
return studentName;
}
}
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student(100, "Lee");
studentLee.studentAddress = "Seoul";
Student studentKim = new Student(101, "Kim");
studentKim.studentAddress = "New York";
studentLee.showStudentInfo();
studentKim.showStudentInfo();
System.out.println(studentLee);
System.out.println(studentKim);
}
– overloading
- 생성자를 구현해서 사용할 수 있음
- 클래스에 생성자를 따로 구현하면 기본 생성자 (default constructor)는 제공되지 않음
- 생성자를 호출하는 코드(client 코드) 에서 여러 생성자 중 필요에 따라 호출해서 사용할 수 있음
public class Student {
int studentId;
String studentName;
String studentAddress;
public Student(){
}
public Student(int studentId, String studentName){
this.studentId = studentId;
this.studentName = studentName;
}
public Student(int studentId, String studentName, String studentAddress){
this.studentId = studentId;
this.studentName = studentName;
this.studentAddress = studentAddress;
}
public void showStudentInfo(){
System.out.println(studentId + "," + studentName + ',' + studentAddress);
}
public String getStudentName(){
return studentName;
}
}
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student(100, "Lee");
studentLee.studentAddress = "Seoul";
Student studentKim = new Student(101, "Kim", "New York");
studentKim.studentAddress = "New York";
studentLee.showStudentInfo();
studentKim.showStudentInfo();
System.out.println(studentLee);
System.out.println(studentKim);
}
}