super 키워드 : 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하고 싶을때 사용하는 참조변수
(인스턴스 변수의 이름과 지역 변수의 이름이 같을 경우 인스턴스 변수 앞에 this 키워드를 사용하여 구분할 수 있었습니다.)
this 키워드와 마찬가지로 부모 클래스의 멤버와 자식 클래스의 멤버 이름이 같을때 super 키워드로 구별한다.
예제
class Parent {
int a = 10;
}
class Child extends Parent {
int a = 20;
void display() {
System.out.println(a);
System.out.println(this.a);
System.out.println(super.a);
}
}
public class Inheritance03 {
public static void main(String[] args) {
Child ch = new Child();
ch.display();
}
}
실행결과
20
20
10
super() 메소드 : this() 메소드가 같은 클래스의 다른 생성자를 호출할 때 사용된다면, super() 메소드는 부모 클래스의 생성자를 호출할 때 사용됩니다.
자식 클래스의 인스턴스를 생성하면, 해당 인스턴스에는 자식 클래스의 고유 멤버뿐만 아니라 부모 클래스의 모든 멤버까지도 포함되어 있습니다.
따라서 부모 클래스의 멤버를 초기화하기 위해서는 자식 클래스의 생성자에서 부모 클래스의 생성자까지 호출해야만 합니다.
이러한 부모 클래스의 생성자 호출은 모든 클래스의 부모 클래스인 Object 클래스의 생성자까지 계속 거슬러 올라가며 수행됩니다.
따라서 자바 컴파일러는 부모 클래스의 생성자를 명시적으로 호출하지 않는 모든 자식 클래스의 생성자 첫 줄에 자동으로 다음과 같은 명령문을 추가하여, 부모 클래스의 멤버를 초기화할 수 있도록 해줍니다.
문법
super();
'BackEnd > JAVA' 카테고리의 다른 글
JDBC와 Mybatis의 차이 / API (0) | 2021.10.05 |
---|---|
[JAVA] Split() 함수로 문자열 자르기 (0) | 2021.07.02 |
[JAVA] [오류] declares multiple JSON fields named / Extends (0) | 2021.05.27 |
[JAVA] Json과 Gson (0) | 2020.11.17 |
[JAVA] JSTL이란? JSTL의 if문 / if ~ else 문 (0) | 2020.09.25 |