inheritance - Swift类函数继承问题

标签 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"

最后一行打印出“I'm class A”,我的本意是打印出“I'm class B”,因为实例类型是class B。我应该如何更改class A函数“print”中的代码()”让类A意识到实例类型是B并打印出“我是类B”? 如果我删除函数“getName()”的“类”前缀,那么它将执行我要求的操作,但如何对类函数执行相同的操作?

最佳答案

使用dynamicType

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

Swift Language Reference 中的示例顺便说一句,和你的很相似。

关于inheritance - Swift类函数继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28018948/

相关文章:

Ruby 从基类访问派生类 "class methods"

arrays - Swift 3 - 函数中数组值发生变化的问题

ios - swift 强制将 objective-c int 分配为 Int32 然后崩溃

ios - 无法将 QLPreviewController 添加为 childViewController iOS10

ios - 无法使用 UIImage 或 NSData 加载图像

javascript - 我应该如何在 Backbone.js 中构造类继承?

PHP 继承和 protected 成员可见性

JavaScript 继承——我做的对吗?

c++ - 具有不同类型的类

iOS 推送通知 刚到就从通知中心移除