[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() 메서드를 쓰지 않으면

 컴파일러는 자동적으로 추가시킨다.




블로그 이미지

필로그래머

,