업캐스팅
캐스팅은 자료형을 변환하는 것을 말한다. 보통은 자료형을 변형하는 일은 기본 자료형을 변환할 때, 예를 들어 int 형 변수를 double 형으로 변환할 때가 많지만, 어떤 클래스의 객체를 변환할 때도 있다.
상속 관계가 있는 객체, 즉 자신의 부모 클래스가 있는 클래스의 객체가 있다고 가정하자. 이 객체를 부모 클래스의 객체로 변환하는 것이 업캐스팅이다.
예를 들어 아래와 같은 클래스 관계가 있다고 가정하자.
class ParentsClass {
...
}
class ChildClass extends ParentsClass {
....
}
그렇다면 아래와 같이 업캐스팅을 할 수 있다. 기본 생성자를 생성할 수 있다고 가정했다.
ParentsClass p = new ChildClass();
혹은 아래와 같이 이미 사용중인 객체를 업캐스팅해줄 수도 있다.
ChildeClass c = new ChildeClass();
ParentsClass p = (ParentsClass) c;
다운캐스팅
업캐스팅을 통해 부모 클래스의 객체로 만들어준 객체를 다시 원래 클래스의 객체로 만들어주는 것이다. 부모 클래스로 생성된 객체를 자식 클래스로 만들어주는 것은 자식 클래스가 추가적으로 가지고 있는 정보가 부족하기 때문에 불가능하고, 업캐스팅되었던 객체애 대해서만 다운캐스팅이 가능하다.
ParentsClass p = new ChildClass();
위와 같이 업캐스팅된 객체를 아래와 같이 다운캐스팅 해줄 수 있다.
ChildClass c = (ChildClass) p;
'Language > Java' 카테고리의 다른 글
[Java] 인터페이스(interface) 및 디폴트(default) 메소드와 정적(static) 메소드 (0) | 2024.11.16 |
---|---|
[Java] abstract 키워드를 통한 추상 클래스와 추상 메소드 (0) | 2024.11.14 |
[Java] 클래스 상속(inheritance) (0) | 2024.11.12 |
[Java] 접근 지정자(access modifier) (0) | 2024.11.11 |
[Java] 클래스(class)와 객체(object) 선언 (0) | 2024.11.03 |