在Swift中,如果我有一个基类和两个继承它的类,并且这些类都有自己的属性。如果我将一个变量赋值给基类,然后稍后将其更改为子类,则无法访问所述属性。以下是一个非常愚蠢的例子。这是我能够在紧急情况下想到的。
http://swiftstub.com/927736954/?v=gmclass Animal {
let alive = true
}
class Human:Animal {
let socks:Int = 5
}
class Dog:Animal {
let collar = "fun"
}
var a:Animal!
var letter = "h"
switch letter {
case "d":
a = Dog()
case "h":
a = Human()
default:
a = Animal()
}
print(a is Human) // TRUE
print(a.socks) // :28:7: error: 'Animal' does not have a member named 'socks'
如何将一个变量最初设置为基类,并将其转换为其子类并访问该子类的属性?