我正在用教程制作一个瓷砖游戏,里面有这段代码:
var tile: SKNode?
switch tileCode {
case "g":
tile = SKSpriteNode(texture: atlas?.textureNamed("grassTile"))
default:
println("Unknown tilecode: \(tileCode)")
}我很困惑,因为tile被声明为SKNode类型,而在switch语句中,它被声明为SKSpriteNode。为什么这样做是可能的?
发布于 2015-08-05 23:59:13
您仍然可以将tile作为SKNode访问,因为它是这样声明的,但它实际上将指向一个SKSpriteNode对象。这种方法有效并且编译器没有抱怨的原因是,SKSpriteNode是SKNode的子类,也就是说,它拥有SKNode所具有的所有属性和方法。整个概念被称为polymorphism,并且与dynamic binding紧密相关。
https://stackoverflow.com/questions/31547482
复制相似问题