Java

[인프런] 다형성과 메서드 오버라이딩

sejin2 2024. 5. 28. 10:32

오버라이딩 된 메서드가 항상 우선권을 가진다.
기존 기능을 덮어 새로운 기능을 재정의 한다는 뜻의 오버라이딩이다.

// 부모 변수가 자식 인스턴스 참조
Parent poly = new Child();
System.out.println("Parent -> Child");
System.out.println("value = " + poly.value); // 변수는 오버라이딩X
poly.method(); // 메서드 오버라이딩

poly변수는 Parent 타입이므로 poly.value, poly.method( )를 호출하면 Parent타입에서 기능을 찾아서 실행한다.
따라서 poly.value는 Parent타입에 있는 value값을 읽는다.
poly.method( )는 Parent 타입에 있는 method(  )를 실행하려고 보니 하위 타입인 Child.method(  )가 오버라이딩 되어있다.
오버라이딩 된 메서드는 항상 우선권을 가지므로 Child의 method(  )가 실행된다. 

오버라이딩된 메서드는 항상 우선권을 가진다. 
오버라이딩은 부모 타입에서 정의한 기능을 자식 타입에서 재정의하는 것이다.
만약 자식에서도 오버라이딩 하고 손자에서도 같은 메서드를 오버라이딩하면 손자의 오버라이딩 메서드가 우선권을 가진다. 더 하위 자식의 오버라이딩된 메서드가 우선권을 가지는 것이다. 

  • 다형적 참조 : 하나의 변수 타입으로 자식 인스턴스를 참조할 수 있는 기능
  • 메서드 오버라이딩 : 기존 기능을 하위 타입에서 새로운 기능으로 재정의

 

 

 

공부 내용: [인프런] 김영한의 실전 자바 - 기본편

'Java' 카테고리의 다른 글

[인프런] 인터페이스  (0) 2024.05.28
[인프런] 추상 클래스  (0) 2024.05.28
instanceof  (0) 2024.05.27
[인프런] 다형성  (0) 2024.05.27
[인프런] super  (0) 2024.05.27