Develop/Java

[Java] super 키워드 사용법

DevPi 2024. 8. 3. 16:47
반응형

자바 프로그래밍에서 상속은 매우 중요한 개념입니다. 상속을 통해 코드를 재사용하고, 유지보수성을 높일 수 있습니다. 상속을 사용하는 과정에서 자주 등장하는 키워드 중 하나가 바로 super입니다. 오늘은 이 super 키워드가 무엇인지, 어떻게 사용하는지에 대해 알아보겠습니다.


정의 및 기능

super 키워드란?

super 키워드는 상위 클래스(부모 클래스)의 멤버를 참조하거나 상위 클래스의 생성자를 호출하기 위해 사용됩니다.

이는 두 가지 주요 용도로 나눌 수 있습니다.

  • 상위 클래스의 생성자 호출
  • 상위 클래스의 메서드 호출

상위 클래스의 생성자 호출

상위 클래스의 생성자를 호출할 때는 super()를 사용합니다. 하위 클래스의 생성자 내부에서 super()를 호출하여 상위 클래스의 생성자를 명시적으로 호출할 수 있습니다. 만약 super()를 명시적으로 호출하지 않으면, 컴파일러가 자동으로 상위 클래스의 기본 생성자를 호출합니다.

class Parent {
    public Parent() {
        System.out.println("Parent constructor called");
    }
}

class Child extends Parent {
    public Child() {
        super(); // 상위 클래스의 기본 생성자를 호출
        System.out.println("Child constructor called");
    }
}

public class Test {
    public static void main(String[] args) {
        Child c = new Child();
    }
}

위 예제에서 Child 클래스의 생성자는 super()를 사용하여 Parent 클래스의 생성자를 호출합니다. 출력 결과는 다음과 같습니다.

Parent constructor called
Child constructor called

 

상위 클래스의 메서드 호출

상위 클래스에서 오버라이드된 메서드를 호출하기 위해 super 키워드를 사용할 수도 있습니다. 하위 클래스에서 동일한 메서드를 정의할 때, 상위 클래스의 메서드를 호출하고 싶다면 super.methodName() 형식으로 호출합니다.

class Parent {
    public void display() {
        System.out.println("Parent method");
    }
}

class Child extends Parent {
    public void display() {
        super.display(); // 상위 클래스의 메서드 호출
        System.out.println("Child method");
    }
}

public class Test {
    public static void main(String[] args) {
        Child c = new Child();
        c.display();
    }
}

위 예제에서 Child 클래스의 display 메서드는 super.display()를 사용하여 Parent 클래스의 display 메서드를 호출합니다. 출력 결과는 다음과 같습니다.

Parent method
Child method

요약

  • super(): 상위 클래스의 생성자를 호출합니다. 생성자 내부에서만 사용될 수 있으며, 하위 클래스 생성자의 첫 줄에 위치해야 합니다.
  • super.methodName(): 상위 클래스의 메서드를 호출합니다. 오버라이드된 메서드를 호출할 때 사용됩니다.

super 키워드는 클래스 상속 구조에서 상위 클래스의 멤버를 명시적으로 참조하거나 호출할 때 매우 유용합니다. 이를 통해 하위 클래스는 상위 클래스의 기능을 재사용하고, 확장된 기능을 구현할 수 있습니다.

반응형