업캐스팅과 다운캐스팅

sehwa!·2023년 9월 4일
0

Java

목록 보기
9/18

📌 업캐스팅
자식타입 > 부모타입 으로 형변환 되는 것

// Phone 부모타입 HandPhone 자식타입
// 업캐스팅 1
Phone p1 = new HandPhone("HandPhone1", true);
// 업캐스팅 2
HandPhone hp = new HandPhone("HandPhone2", true);
Phone p2 = hp;

부모가 정의한 멤버에만 접근가능

📌 다운캐스팅
부모타입 > 자식타입 으로 형변환 되는 것
업캐스팅한 인스턴트만 다운캐스팅으로 형변환할 것
그렇지 않은 경우 오류발생 가능성 있음

HandPhone hp2 = (HandPhone) p2;

📌 instanceof 로 형변환가능여부 체크하기
A instanceof B : A가 B로 형변환 가능한가요?

class Car { }
class Bus extends Car { }
class Bongo extends Bus { }
class Ambulance extends Bus { }

public class InstanceCheck main메소드

Car car = new Car();
Car bus = new Bus();
Car bongo = new Bongo();
Car ambulance = new Ambulance();
System.out.println("bus instance of Car : " + (bus instanceof Car));
// 동일타입 : true
System.out.println("bus instance of Bus : " + (bus instanceof Bus));
// 부모타입 > 자식타입 (다운캐스팅) : true
System.out.println("bus instance of Object : " + (bus instanceof Object));
// 자식타입 > 부모타입 (업캐스팅) : true
System.out.println("bus instance of Bongo : " + (bus instanceof Bongo));
// 부모타입 > 자식타입 (강제형변환) : false
System.out.println("bongo instance of Ambulance : " + (bongo instanceof Ambulance));
// 형제타입 : false
System.out.println("ambulance instance of Object : " + (ambulance instanceof Object));
// 자식타입 > 최상위Object : true

0개의 댓글