this
- 자신의 인스턴스에 접근할때 사용
- 보통 this.을 사용하여 멤버 변수에 접근함
- 메서드, 생성자에서 사용하는 매개변수(파라미터)이름과 해당 클래스 멤버 변수명이 같을때 구분하기 위해 사용
public class Student {
public String name;
public String grade;
public Student(String name, String grade) {
this.name = name;
this.grade = grade;
}
}
생성자(constructor)
- 생성자의 목적은 객체 초기화 이다.
- 생성자의 이름은 클래스 이름과 같아야 한다.
- 생성자는 반환 타입이 없다.
- 생성자는 인스턴스를 생성한 후 바로 호출된다.(객체당 한번만 호출)
- 개발자가 생성자를 작성하지 않으면 컴파일러가 자동으로 기본 생성자 삽입
- 생성자는 오버로딩 가능하다
생성자 장점
- 직접 정의한 생성자를 호출 하지 않을경우 컴파일 오류가 발생하기 때문에 필수값 입력을 보장할 수 있다.
this()
- 생성자 내부에서만 사용할 수 있다.
- 생성자의 첫 줄에서만 this()를 사용할 수 있다.
public class Student {
public String name;
public String grade;
Student(String name, String grade) {
this.name = name;
this.grade = grade;
}
Student(String name) {
this(name, "A");
}
}
public class Main {
public static void main(String[] args) {
// Student student0 = new Student(); // error : no suitable constructor found for Student(no arguments)
Student student1 = new Student("Kim");
Student student2 = new Student("Kim", "C");
Student[] students = {student1, student2};
for (Student student : students) {
System.out.println("student.name = " + student.name);
System.out.println("student.grade = " + student.grade);
}
}
}