[iOS] Upcasting & Downcasting

RudinP·2024년 2월 26일
0

Study

목록 보기
179/227

Upcasting

  • 자식 클래스의 객체를 부모 클래스의 객체에 담는 것
class A{
	let one: String = "one"
}
class B: A{
	let two: String = "two"
}
class C: B{
	let three: String = "three"
}

let x : A = B() //Upcasting

x.one //"one"
x.two //접근 불가. 컴파일 에러.

Downcasting

  • 업캐스팅되었던 객체를 다시 본인의 클래스로 되돌리는 것.
  • 부모 클래스 객체를 자식 클래스의 객체를 담는 것이 아니다. 이는 불가능하다.
  • 명시적 타입캐스팅을 사용
if let b = x as? B{
	b.two //"two"
}

//반드시 본인 클래스로 다운캐스팅하지 않아도 된다.
let y : A = C()
if let bb = y as? B{
	bb.two //"two"
}

사용 의의

  • 다형성
  • 여러 자식 클래스의 객체를 하나로 묶어 관리하기 편하다
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글