본문 바로가기

Java/Java 문법

[Java] super, super 생성자

728x90
반응형

super

 

super 키워드를 사용하면 SubClass(자식클래스)에서 SuperClass(부모클래스)의 멤버 및 메서드에 접근할 수 있다.

 

상속을 받았으니 당연히 super 키워드 없이도 사용이 가능하지만 this 키워드처럼 활용할 수 있다.

 

따라서 아래 코드처럼 부모클래스의 멤버에 접근하는 것이 가능하다.

 

class A {
    int a;
}
class B extends A {
    int a, b;
    B (int a, int b) {
    this.a = a + super.a;
    this.b = b;
    }
}

 

 

 

 

 

 

SuperClass 생성자

 

SubClass 객체를 생성하면 SuperClass의 생성자가 먼저 호출되고 SubClass의 생성자가 호출된다.

 

이는 아래의 코드를 통해서 확인할 수 있다.

 

class SuperClass {
    public SuperClass() {
        System.out.println("슈퍼클래스 생성자 호출");
    }
}

class SubClass extends SuperClass {
    public SubClass() {
        System.out.println("서브클래스 생성자 호출");
    }
}

 

 

 

그러나 만약 SuperClass에 기본생성자(매개변수가 없는 생성자)가 없다면 SubClass의 멤버는 초기화되지 않은 채로

남아버리기 때문에 이때에는 SubClass에서 명시적으로 SuperClass 생성자를 호출해주어야 한다.

 

class SuperClass {
    int a;
    SuperClass(int a) {
        this.a = a;
    }
}

class SubClass extends SuperClass {
    int b;
    SubClass(int a, int b) {
        super(a);
        this.b = b;
    }
}

 

 

 

 

728x90
반응형