본문 바로가기
Java/Basic

다형성과 메서드 오버라이딩

by o3oppp 2024. 12. 31.
다형성과 메서드 오버라이딩
public class Parent {
    public String value = "parent";
    public void method() {
        System.out.println("Parent.method");
    } 
}
public class Child extends Parent {
    public String value = "child";
    
    @Override
    public void method() {
        System.out.println("Child.method");
    } 
}

  • 멤버 변수는 오버라이딩 되지 않으며 메서드만 오버라이딩
  • 중요한 것은 오버라이딩 된 메서드가 항상 우선권을 가짐

상세 과정

  • child는 Child 타입이므로 value, method() 호출 시 Child 타입에서 기능을 찾아서 실행

  • parent는 Parent 타입이므로 value, method() 호출 시 Parent 타입에서 기능을 찾아서 실행

  • poly 변수는 parent 타입이므로 value, method() 호출 시 Parent 타입에서 기능을 찾아서 실행
    • value : Parent 타입에 있는 value 값을 읽음
    • method() : Parent 타입에 있는 method()를 실행하려고 하지만 하위 타입인 Child.method()가 오버라이딩 되어 있음, 이 경우 오버라이딩 된 메서드가 항상 우선권을 가지기 때문에 Parent.method()가 아닌 Child.method()가 실행
    • 만약 손자에서도 같은 메서드를 오버라이딩 하는 경우 손자의 오버라이딩 된 메서드가 우선권을 가짐

'Java > Basic' 카테고리의 다른 글

추상 클래스  (1) 2025.01.02
instanceof  (0) 2024.12.31
다형성과 캐스팅  (0) 2024.12.30
상속  (0) 2024.12.12
static  (1) 2024.12.08