///////
Search

다운캐스팅, 업캐스팅

날짜
2022/09/27
텍스트
위 코드처럼 클래스의 타입을 확인하고 맞다면 객체를 생성하는 방법으로 사용한다. (다운캐스팅)

업캐스팅이란

자식 객체를 부모 객체로 형 변환한 것.
부모 객체로 객체변수를 생성하고, 이걸 자식 객체로 호출하는 것.
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
복사
위 코드처럼 클래스의 타입을 확인하고 맞다면 객체를 생성하는 방법으로 사용한다. (다운캐스팅)