용어/java

[JAVA] 상속, 다형성 오버라이딩 된 메서드의 우선권

줌인. 2024. 7. 1. 17:46

오버라이딩된 메서드는 객체의 실제 타입에 따라 자식 클래스의 메서드가 호출되고,
변수는 참조 변수의 타입에 따라 부모 클래스의 변수를 참조한다.
오버라이딩 된 메서드는 항상 우선권을 가진다.

 

 

[변수와 메서드 접근 차이]

변수 메서드
  • 변수는 참조 변수의 타입에 따라 결정
    즉, 부모 타입의 참조 변수를 통해 객체를 접근할 때,
    변수는 부모 클래스에 정의된 변수를 참조
  • 이를 정적 바인딩(static binding) 또는 컴파일타임 바인딩(compile-time binding)이라고 함
  • 메서드는 객체의 실제 타입에 따라 결정
    - 즉, 부모 타입의 참조 변수를 통해 객체를 접근할 때,
     오버라이딩된 메서드는 자식 클래스에서 정의된 메서드 
     가 호출
  • 이를 동적 바인딩(dynamic binding) 또는 런타임 바인딩(runtime binding)이라고 합니다.

 

"오버라이딩된 메서드가 항상 우선권"을 가지는 이유는 자바의 다형성(polymorphism) 때문이다.
즉, 부모 타입의 변수로 자식 객체를 참조하더라도,
실제 객체의 타입에 따라 자식 클래스의 오버라이딩된 메서드가 호출된다.

 

 

[예시 코드]

class Parent {
    String name = "Parent";

    void show() {
        System.out.println("Parent method");
    }
}

class Child extends Parent {
    String name = "Child";

    @Override
    void show() {
        System.out.println("Child method");
    }
}

public class Test {
    public static void main(String[] args) {
        Parent obj = new Child();
        System.out.println(obj.name);  // 출력: Parent
        obj.show();                   // 출력: Child method
    }
}

변수 자체는 부모를 참조하나, 메서드는 자식을 참조하는 것을 볼 수 있음

 

변수 접근 메서드 접근
  • Parent obj = new Child();로 객체를 생성하면,
    obj는 Parent 타입의 참조 변수
  • System.out.println(obj.name);을 호출하면, name 변수는 Parent 클래스에 정의된 변수를 참조하므로
    "Parent"가 출력
  • obj.show();를 호출하면, show 메서드는 자식 클래스인
    Child에서 오버라이딩된 메서드가 호출
  • 이는 객체의 실제 타입이 Child이기 때문에
    "Child method"가 출력

 

 

▶ 상속과 다형성 이해 예시

https://zoooom-in.tistory.com/111

 

[국비][JAVA] 상속과 다형성 이해 예시

▶ 다형성 사용 이유 및 순수 추상클래스https://zoooom-in.tistory.com/62 [김영한_자바기본][11. 다형성2] 다형성 사용 이유 및, 순수 추상 클래스(p.1-20)1. 다형적 참조 / 메서드 오버라이딩을 통해 각자

zoooom-in.tistory.com

 

▶ 상속과 메모리 구조

https://zoooom-in.tistory.com/61

 

[김영한_자바기본][10. 다형성1] 상속과 메모리 구조(p.1-23)

1. 자식 객체를 부모 참조 변수에 할당하면 부모 메서드에 접근이 가능하다. 2. 다운캐스팅은 '일시적으로' 부모 타입의 참조 변수를 자식 타입으로 형변환하는 것이다. 3. 다운 캐스팅 수행 전 ins

zoooom-in.tistory.com

 

 

▶ 다형성과 설계, 예제를 통한 이해

https://zoooom-in.tistory.com/71

 

[김영한_자바기본][12. 다형성과 설계] (보충) 예제를 통한 이해 (p.13-

▶ 다형성 사용 전, 후 : 예제를 통한 이해 https://zoooom-in.tistory.com/63 [김영한_자바기본][12. 다형성과 설계] 다형성 사용 전, 후 예제를 통한 이해 (p.1-20) OCP(Open-Closed principle) 원칙 = 전략 패턴 - Open f

zoooom-in.tistory.com

 

728x90