JAVA

상속, 다운 캐스팅, instanceof

NEWDODORIPYO 2022. 3. 19. 15:54

⭐컴파일 허가 바라보던 타입을 부모 타입이 아니라 자식 타입으로 보는 것을 다운 캐스팅(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