[java] 메소드 오버라이딩을 통한 상속 클래스의 동작 변경

자바에서는 상속을 통해 부모 클래스의 메소드를 자식 클래스에서 재정의할 수 있습니다. 이를 메소드 오버라이딩(overriding)이라고 합니다. 메소드 오버라이딩을 통해 자식 클래스에서 부모 클래스의 메소드 동작을 변경할 수 있습니다.

메소드 오버라이딩의 기본 구조

자식 클래스에서 부모 클래스의 메소드를 오버라이딩하기 위해서는 다음과 같은 규칙을 따라야 합니다.

  1. 메소드 이름, 리턴 타입, 파라미터 타입, 파라미터 개수가 동일해야 합니다.
  2. 접근 제어자는 확장되거나 축소될 수 있지만, private는 될 수 없습니다.
  3. 부모 클래스의 메소드가 final이 아니면 자식 클래스에서 오버라이딩할 수 있습니다.
class Parent {
    public void greet() {
        System.out.println("Hello from Parent");
    }
}

class Child extends Parent {
    @Override 
    public void greet() {
        System.out.println("Hello from Child");
    }
}

위 코드에서 Child 클래스는 Parent 클래스의 greet 메소드를 오버라이딩하여 동작을 변경하고 있습니다.

메소드 오버라이딩의 활용

메소드 오버라이딩은 다형성(polymorphism)을 구현하는데 사용됩니다. 부모 클래스의 참조변수를 통해 자식 클래스의 오버라이딩된 메소드를 호출할 수 있습니다.

Parent obj = new Child();
obj.greet(); // "Hello from Child"가 출력됨

결론

메소드 오버라이딩은 상속을 활용하여 부모 클래스의 메소드 동작을 자식 클래스에서 변경할 수 있는 강력한 기능입니다.

자세한 내용은 Oracle Java Documentation를 참고하세요.