Language/Java
this와 super
Hyeri.dev
2024. 1. 5. 10:35
this와 super
this와 super 키워드는 변수와 메서드에 관련이 있는 키워드이다.
- this : 현재 클래스의 변수(또는 메서드)을 가져올 때 사용하는 키워드
- super : 현재 클래스의 상위 클래스(상속 관계)의 변수(또는 메서드)을 가져올 때 사용하는 키워드
public class Child extends Parents {
public String value;
public Child (String value) {
this.value = value; // 현재 클래스(Child)의 값
super.value. = value; // 상위 클래스(Parents)의 값
}
}
public class Parents {
public String value;
}
this()와 super()
this()와 super()는 생성자와 관련이 있는 키워드이다.
- this() : 현재 클래스의 생성자를 사용할 때 사용하는 키워드
- super() : 현재 클래스의 상위 클래스(상속 관계)의 생성자를 사용할 때 사용하는 키워드
public class Child extends Parents {
public Child(int a) {
super(); // 상위 클래스(Parents)의 기본생성자 호출, 생략 가능
}
}
public class Parents {
}
상위 클래스의 생성자가 기본 생성자만 있을 경우 super() 키워드를 생략할 수 있다.
(기본 생성자를 작성하지 않아도 자바 컴파일러가 자동적으로 기본 생성자를 생성해주는 것과 같은 이치)
public class Child extends Parents {
public int a;
public Child(int a) {
super(a); // 상위 클래스의 생성자 호출, 기본생성자가 아니므로 생략 불가.
this.a = a;
}
public Child(int a) {
this.a = a;
super(a); // 컴파일 오류. 상위 클래스의 생성자를 우선 호출해야 함.
}
}
public class Parents {
public Parents(int a) {
// 기본 생성자 없음.
}
}
기본 생성자가 아닌 생성자를 호출할 때에는 반드시 상위 클래스의 생성자를 호출해야 하며 해당 클래스의 값을 대입한 후에 호출은 불가하므로 우선적으로 상위 클래스의 생성자를 호출해야 한다.