[Java] 자바 상속과 super() 메서드
2017/05/12 - [java] - [Java] 상속 (inheritance)과 Object 클래스
상속과 super() 메서드
- 상속 받은 클래스의 모든 생성자는 수퍼 클래스의 기본 생성자를 호출한다.
super();
- 만약 수퍼 클래스의 기본 생성자를 호출하는 코드를 작성하지 않는다면,
컴파일러가 생성자 블록의 첫 줄에 이 코드를 자동으로 삽입한다.
- 수퍼 클래스의 생성자를 호출하는 코드는 반드시 첫 명령어로 작성해야 한다.
그 앞에 주석은
수퍼 클래스의 기본생성자를 호출하는 super() 메서드 예제
public class A {
int a;
public A() {
// int a = 20; // 만약 수퍼 클래스의 생성자를 호출하는 코드 앞에 다른 명령이 있다면,
// 컴파일 오류이다.
// 반드시 첫 명령어로 이 클래스의 수퍼 클래스 생성자를 호출하는 코드를 작성해야 한다.
super(); // Object 클래스 생성자 호출
System.out.println("A()");
}
}
public class B extends A {
int b;
public B() {
super(); // A 클래스 생성자 호출
System.out.println("B()");
}
}
public class C extends B {
int c;
public C() {
super(); // B 클래스 생성자 호출
System.out.println("C()");
}
}
인스턴스 생성 코드
public static void main(String[] args) {
new C();
}
- 실행결과 :
A()
B()
C()
*참고 :
수퍼 클래스(부모 클래스)의 기본 생성자를 호출하는 super() 메서드를 쓰지 않으면
컴파일러는 자동적으로 추가시킨다.
'Programming > java' 카테고리의 다른 글
[Java] 캡슐화(encapsulation), 접근 제어자(private, default, protected, public) (0) | 2017.05.15 |
---|---|
[Java] super 키워드의 사용 (0) | 2017.05.15 |
[Java] final 명령어 (public static final ...) (0) | 2017.05.15 |
[Java] 컬렉션 클래스 - List, Set, Map의 개념 정리 (3) | 2017.05.12 |
[Java] 랩퍼(wrapper) 클래스와 boxing / unboxing (2) | 2017.05.12 |