[JAVA] 업캐스팅 & 다운캐스팅

캐스팅이란

상속 관계에 있는 클래스에서 서로 간의 형변환을 말합니다.

 

업캐스팅

자식 클래스의 객체에서 부모 클래스의 타입으로 형변환되는 것을 말합니다. 다형성을 이용하여 부모 클래스의 공통된 기능을 여러 종류의 자식 클래스에서 다룰 수 있게 해줍니다. 

 

다운캐스팅

업캐스팅과 반대로 부모 클래스 객체를 자식 클래스 타입으로 형변환되는 것을 말합니다. 상속에서 자식 클래스는 부모 클래스에서 확장된것이기 때문에 인스턴스 생성없이 다운캐스팅을 하게 되면 ClassCastException 에러가 발생합니다.

 

업캐스팅 다운캐스팅 예제

class Parent {
    void showName() {
        System.out.println("parent name");
    }
}

class Child extends Parent {
    @Override
    void showName() {
        System.out.println("child name");
    }
}

public class Main {
    public static void main(String[] args) {
        // UpCasting
    	Parent ca = new Child();
        ca.showName();
        
        // DownCasting
        if(ca instanceof Child) {
            Child child = (Child) ca;
            child.showName();
        }
    }
}

'JAVA > 객체 지향 프로그래밍' 카테고리의 다른 글

[JAVA] 인터페이스  (0) 2023.08.20
[JAVA] 추상화 클래스  (0) 2023.08.19
[JAVA] 다형성이란  (0) 2023.08.19
[JAVA] 메서드 오버라이딩 조건  (0) 2023.08.18
[JAVA] 상속 super 키워드와 super() 메서드  (0) 2023.08.18