[java] 메소드 오버라이딩을 통한 상속 클래스의 동작 변경
자바에서는 상속을 통해 부모 클래스의 메소드를 자식 클래스에서 재정의할 수 있습니다. 이를 메소드 오버라이딩(overriding)이라고 합니다. 메소드 오버라이딩을 통해 자식 클래스에서 부모 클래스의 메소드 동작을 변경할 수 있습니다.
메소드 오버라이딩의 기본 구조
자식 클래스에서 부모 클래스의 메소드를 오버라이딩하기 위해서는 다음과 같은 규칙을 따라야 합니다.
- 메소드 이름, 리턴 타입, 파라미터 타입, 파라미터 개수가 동일해야 합니다.
- 접근 제어자는 확장되거나 축소될 수 있지만,
private
는 될 수 없습니다. - 부모 클래스의 메소드가
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를 참고하세요.