# 클래스 업 캐스팅 ## 네이버 지식인 질문 발췌 상속관계의 클래스 P, PP, PPP가 있습니다. 아래와 같이 같은 이름의 필드 `name`를 가지고 있습니다. ``` class P { public String name; } class PP extends P { public String name; } class PPP extends PP { public String name; } ``` PPP 객체를 아래와 같이 만들고 P영역, PP영역, PPP영역의 name을 각각 다르게 초기화 해주려면 어떻게 해야할까요? ``` public class SuperAndOverrdingTest { public static void main(String[] args) { P p = new PPP(); /* 어떻게 해야 할까요? */ } } ```
## 업 캐스팅 PPP객체를 업캐스팅하여 PP 또는 P 객체로 인식하게 한뒤 인스턴수 변수를 변경 해줍니다. ``` public class SuperAndOverrdingTest { public static void main(String[] args) { P p = new PPP(); ((P) p).name = "p name"; // P 영역 이름 변경 ((PP) p).name = "pp name"; // PP 영역 이름 변경 ((PPP) p).name = "ppp name"; // PPP 영역 이름 변경 System.out.println(((P) p).name); // P 영역 이름 출력 System.out.println(((PP) p).name); // PP 영역 이름 출력 System.out.println(((PPP) p).name); // PPP 영역 이름 출력 } } ``` ### 추가 자료 업 캐스팅과 다운 캐스팅에 대해 구글링 해보세요.