Swift类函数继承问题

时间:2015-01-19 06:20:34

标签: inheritance swift

我有Swift类函数继承的问题,这里是代码的一个例子:

class A {

    class func getName() -> String {
        return "I'm class A"
    }

    func print() -> Void {
        println(A.getName())
    }
}

class B : A {
    override class func getName() -> String {
        return "I'm class B"
    }
}

var b = B()
b.print() //This line prints out "I'm class A"

最后一行打印出“我是A类”,我的意思是打印出“我是B类”,因为实例类型是B类。我应该怎样更改A类函数中的代码“print ()“让A级实现实例类型为B并打印出”我是B级“? 如果我删除“class”前缀他的函数“getName()”,那么它会做我要求的,但是如何对类函数做同样的事情?

1 个答案:

答案 0 :(得分:1)

使用dynamicType

class A {
    func print() -> Void {
        println(self.dynamicType.getName())
    }
}

Swift Language Reference中的示例与您的示例类似,顺便提一下。