본문 바로가기
Language/Java

생성자 super()

by 태윤2 2020. 6. 5.

생성자 super()

 

-슈퍼클래스의 생성자를 명시적으로 호출

목적1) 슈퍼클래스의 생성자 중 특정 생성자를 명시적으로 호출해야하는 경우 사용

         ex) 슈퍼클래스에 기본생성자 없이 파라미터 생성자만 정의할 경우

         서브클래스에서 슈퍼클래스의 기본생성자를 호출하지 못해 오류 발생

         이 때, 슈퍼클래스의 파라미터 생성자를 명시적으로 호출할 때 사용

목적2) 슈퍼클래스의 생성자에서 초기화하는 코드가 존재할 경우

          ex) 서브클래스의 생성자에서 슈퍼클래스의 멤버변수까지 초기화하면 코드 중복 발생

          이 때, 슈퍼클래스의 멤버는 슈퍼클래스의 생성자에서, 서브클래스의 멤버는

           서브클래스의 생성자에서 초기화하여 중복을 제거하기 위해 사용

주의! 생성자 super() 는 반드시 생성자 내에서 첫번째 문장으로 실행되어야 한다

        => 생성자 내에 super() 와 this() 를 동시에 사용 불가

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Person {
    String name;
    int age;
 
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
 
class Spiderman extends Person {
    boolean isPaiderMode;
    
    public Spiderman(){
//super(); 암묵적으로 포함됨
        this("피터파커"20false);
    }
    public Spiderman(String name, int age, boolean isSpaiderMode) {
    super(name,age);
    this.isSpaiderMode = isSpaiderMode;
    }
}
cs

호출 순서

 

'Language > Java' 카테고리의 다른 글

캐스팅  (0) 2020.06.09
레퍼런스(참조형) 형변환  (0) 2020.06.05
레퍼런스 super  (0) 2020.06.05
접근제한자  (0) 2020.06.05
메서드 오버라이딩 (Method Overriding) = 메서드 재정의  (0) 2020.06.05