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

henu·2025년 2월 16일

메서드 오버라이딩

오버라이딩 된 메서드가 항상 우선권을 가진다.

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
    pubilic void method() {
    	System.out.println("Child.mehtod");
    }
}
public class Main {
	public static void main(String[] args) {
    	Parent poly = new Child();
        System.out.println("Parent -> Child");
        System.out.println("value  = " + poly.value);
        poly.method();
    }
}

실행결과
Parent -> Child
value = parent
Child.method

  • poly 변수는 Parnet 타입이다. 따라서 poly.value, poly.mehtod()를 호출하면 인스턴스의 Parnet 타입에서 기능을 찾아서 실행한다.
    • poly.value : Parnet 타입에 있는 vlaue 값을 읽는다.
    • poly.method() : Parent 타입에 있는 method()를 실행하려고 한다. 그런데 하위 타입인 Child.method()가 오버라이딩 되어 있고 오버라이딩 된 메서드는 항상 우선권을 가진다. 따라서 Parent.method()가 아니라 Child.method()가 실행된다.

알고리즘 문제를 해결할때 Queue를 생성할 때 삽입 삭제가 많을 경우 LinkedList로 생성하는데 오버라이딩된 메서드를 LinkedList 것을 사용하기 때문이라는 것을 알 수 있었다.

profile
주니어 백엔드 개발자입니다

0개의 댓글