위 코드처럼 클래스의 타입을 확인하고 맞다면 객체를 생성하는 방법으로 사용한다. (다운캐스팅)
업캐스팅이란
자식 객체를 부모 객체로 형 변환한 것.
부모 객체로 객체변수를 생성하고, 이걸 자식 객체로 호출하는 것.
class TV {
private int size;
public TV(int size) {
this.size = size;
}
protected int getSize() {
return size;
}
}
class ColorTV extends TV {
private int color;
public int getColor() {
return color;
}
public ColorTV(int size, int color) {
super(size);
this.color = color;
}
public void printProperty() {
System.out.println(super.getSize() + "인치 " + color + "컬러");
}
}
Java
복사
위와 같은 부모클래스 TV와 자식클래스 ColorTV가 있다.
Main 함수에서 다음과 같이 호출한다
TV tv;
tv = new ColorTV(27,720); // 다운캐스팅
Java
복사
메모리 상 이렇게 된다.
일단 부모 객체로 tv 가 생성되어서 TV 에서 접근할 수 있는 부분에만 접근할 수 있다.
다운캐스팅
부모 객체를 자식 객체로 형변환 하는 것
ColorTV colortv = (ColorTV)tv; // 다운캐스팅
Java
복사
다운캐스팅 하게되면 ColorTV 가 갖고있는 color , getColor() 에도 접근할 수 있게된다.
활용
•
함수의 parameter 로 부모 클래스 객체 변수를 쓸 때
instanceof 연산자
•
객체의 실제 타입을 알고 싶을 때 사용
객체 변수 instanceof 클래스명
리턴타입: true / false
Java
복사
if(shape instanceof Rectangle){
System.out.println("실제 타입은 Rectangle 입니다");
Rectangle rec = (Rectangle) shape;
}
Java
복사
위 코드처럼 클래스의 타입을 확인하고 맞다면 객체를 생성하는 방법으로 사용한다. (다운캐스팅)