728x90
반응형
SMALL
생성자 개념은 익숙하다고 해도 오버로딩 시 this()를 사용하는 경우가 어떤 경우가 있는지 좀 명확하게 하기 위해 작성을 해본다.
예를 들어, 다음과 같은 코드가 있다고 해보자.
Student
public class Student {
private String name;
private int age;
private int grade;
public Student(String name, int age) {
this.name = name;
this.age = age;
this.grade = 0;
}
public Student(String name, int age, int grade) {
this.name = name;
this.age = age;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
}
이 Student 클래스는 두 개의 생성자를 가지고 있다. 하나는 'name'과 'age'를 받는것과 나머지 하나는 'name', 'age', 'grade'를 받는것. 그리고 'grade'를 받지 않는 생성자를 사용할 땐 일단 점수는 0이라고 가정하고 'grade'에 0을 대입한다.
그런데 자세히 보면, 두 생성자가 거의 같은 코드이다. 이 중복을 어떻게 없앨 순 없을까? 그때 사용하는 것이 this()이다.
그래서 this()를 사용한 리팩토링 코드는 다음과 같다.
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;
}
이전 코드와 비교해보면 중복이 확실히 제거됐음을 알 수 있다. 이게 바로 this() 키워드이다.
주의
this()를 쓸 때 주의할 점이 있다. this()는 반드시 첫 줄에 있어야 한다. 예를 들어 다음과 같이 첫 줄이 아니면 에러가 발생한다.
public Student(String name, int age) {
System.out.println("생성자 호출");
this(name, age, 0);
}
그 에러 내용은 다음과 같다. 첫 줄에 적으라고 알려준다.
728x90
반응형
LIST
'JAVA의 가장 기본이 되는 내용' 카테고리의 다른 글
Class 레벨의 접근제어자 (0) | 2024.03.26 |
---|---|
Package에서 딱 하나 헷갈리는 한가지 (0) | 2024.03.26 |
객체 지향 프로그래밍 (0) | 2024.03.26 |
NullPointerException (0) | 2024.03.25 |
Null / GC (Garbage Collection) (0) | 2024.03.25 |