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 //접근 불가. 컴파일 에러.
if let b = x as? B{
b.two //"two"
}
//반드시 본인 클래스로 다운캐스팅하지 않아도 된다.
let y : A = C()
if let bb = y as? B{
bb.two //"two"
}