⭐컴파일 허가 바라보던 타입을 부모 타입이 아니라 자식 타입으로 보는 것을 다운 캐스팅(Down Casting)이라고 합니다
글만으로는 이해하기 어려워 가벼운 예제를 통해 알아보겠습니다
public class ZR {
public void make(){
System.out.println("야야야");
}
}
public class RR extends ZR{
public void rrzd(){
System.out.println("호호 ");
}
}
2개의 클래스를 만들어주었습니다 RR 클래스는 현재 ZR클래스를 상속하고있습니다
여기서 RR클래스의 rrzd 를 부르면 어떻게 될까요??
이렇게 컴파일 에러가 발생합니다 왜 이럴까요?? 그냥 생각해보면 당연하게 불러올 수 있을 줄 알았던 코드인데
이런 경우에 컴파일러에게 자 봐봐 내가 찾는 건 rrzz 야라고 말해주는 것 컴파일 러가 바라보던 타입을 부모 타입이 아니라 자식 타입으로 보는 것을 다운 캐스팅(Down Casting)이라고 합니다
rrzz를 불러오기 위해서는 이렇게 해주면 됩니다
public class Main_2 {
public static void main(String[] args) {
ZR zr = new RR();
((RR) zr).rrzd();
}
}
⭐결과
호호
RR 클래스를 zr로 줄여주고 그 후 rrzd를 불러주는 방식인 "((RR) zr).rrzd();" 호출해주면 됩니다 !!
이것이 바로 다운 캐스팅입니다
'JAVA' 카테고리의 다른 글
인터페이스 vs 추상 클래스 (0) | 2022.03.19 |
---|---|
다형성(Polymorphism) (0) | 2022.03.19 |
추상 클래스(Abstract Class) (0) | 2022.03.19 |
눈 속임 Override (0) | 2022.03.14 |
상속 심화 (0) | 2022.03.14 |