본문 바로가기

Java

[Java]super 키워드 및 메소드 오버라이딩

super 키워드 및 메소드 오버라이딩

super 키워드 및 메소드 오버라이딩 이해하기

객체지향 프로그래밍(OOP)에서 super 키워드와 메소드 오버라이딩은 매우 중요한 개념입니다. super 키워드는 부모 클래스의 멤버를 참조할 때 사용되고, 메소드 오버라이딩은 자식 클래스가 부모 클래스의 메소드를 재정의하는 것을 의미합니다. 이 포스트에서는 이 두 개념을 자세히 살펴보겠습니다.

super 키워드란?

super 키워드는 자식 클래스에서 부모 클래스의 멤버(변수나 메소드)에 접근할 때 사용됩니다. 주로 다음과 같은 경우에 사용됩니다:

  • 부모 클래스의 메소드를 호출할 때
  • 부모 클래스의 생성자를 호출할 때

예제 코드

다음은 super 키워드를 사용하는 간단한 예제입니다:

class Animal {
    String name = "동물";

    void sound() {
        System.out.println("동물 소리");
    }
}

class Dog extends Animal {
    String name = "개";

    void sound() {
        System.out.println("멍멍");
    }

    void printNames() {
        System.out.println(name); // 자식 클래스의 name
        System.out.println(super.name); // 부모 클래스의 name
    }

    void makeSound() {
        sound(); // 자식 클래스의 sound
        super.sound(); // 부모 클래스의 sound
    }
}

public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.printNames(); // 개, 동물
        myDog.makeSound(); // 멍멍, 동물 소리
    }
}

메소드 오버라이딩이란?

메소드 오버라이딩은 자식 클래스가 부모 클래스의 메소드를 재정의하는 것을 의미합니다. 이를 통해 자식 클래스는 부모 클래스의 메소드 대신 자신만의 구현을 제공할 수 있습니다. 오버라이딩된 메소드는 부모 클래스와 동일한 메소드 이름, 반환 타입, 매개변수를 가져야 합니다.

예제 코드

다음은 메소드 오버라이딩의 예제입니다:

class Animal {
    void sound() {
        System.out.println("동물 소리");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("멍멍");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Dog();
        myAnimal.sound(); // 멍멍
    }
}

결론

super 키워드와 메소드 오버라이딩은 객체지향 프로그래밍에서 상속을 활용하는 중요한 기법입니다. super 키워드는 부모 클래스의 멤버에 접근할 수 있게 해주며, 메소드 오버라이딩은 자식 클래스가 부모 클래스의 메소드를 재정의하여 더 구체적인 동작을 구현할 수 있게 합니다. 이를 통해 코드의 재사용성과 유연성을 높일 수 있습니다.