Java

[오개념 정리] Upcasting

zangsu_ 2023. 5. 20. 17:23

다음과 같은 클래스 Parent, Child가 존재한다고 가정 해 봅시다.

public class Parent {
    int a;
}

public class Child extends Parent{
    int b;
}

 

즉, Child 클래스는 Parent 클래스를 부모 클래스로 상속 받습니다.

이후 다음 코드를 실행 해 봅니다.

public class Main {
    public static void main(String[] args) {

        Parent upcasting = new Child();

        System.out.println("upcasting class = " + upcasting.getClass());
    }
}

 

위 코드의 결과 값은 무엇이 나올까요?

정답은 upcasting class = class Child 입니다.

 

UpCasting 이라는 것은 특정 부모 클래스를 상속 받은 자식 클래스가 존재할 때, 해당 자식 클래스를 "임시로" 부모 클래스로 취급 해 주는 것입니다. 즉, 해당 변수를 부모 클래스로 완전히 형 변환을 시켜 주는 것이 아닙니다.

 

가만히 고민 해 보고 나니 너무 당연한 이야기인데, 완전히 클래스를 변경시켜 준다고 잘못 생각하고 있었습니다.