생성자
- 객체가 생성될 때 초기화 목적으로 실행되는 메소드
- 객체가 생성되는 동시에 호출된다.
public class ClassName {
public ClassName() {
}
}
특징
- 클래스의 이름과 같다.
- 오버로딩처럼 여러개를 정의할 수 있지만 하나만 호출된다.
- 반환타입을 지정할 수 없다.
- 직접 정의한 생성자를 반드시 호출해야 되기 때문에 필수값 입력을 보장할 수 있다.
- 생성자를 호출하지 않으면 컴파일 오류가 발생한다.
- 클래스에 생성자가 없으면 자바 컴파일러는 매개변수가 없고, 작동하는 코드가 없는 기본 생성자를 자동으로 만들어준다. (생성자가 하나라도 있으면 기본 생성자를 만들어 주지 않는다.)
this
- 멤버변수와 매개변수의 이름이 같을 때 구분하기 위해서 쓴다.
- static 메소드에서는 사용할 수 없다.
public class Student {
String name;
int age;
int grade;
public Student(String name, int age, int grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
}
this()
- 생성자 내부에서 자신의 생성자를 호출하여 중복을 제거할 수 있다.
- 생성자 코드의 첫줄에만 작성할 수 있다.
public class Student {
String name;
int age;
int grade;
public Student() {
}
public Student(String name) {
this(name, 0, 0);
}
public Student(String name, int age) {
this(name, age, 0);
}
public Student(String name, int age, int grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
}