迅速。在子类中使用扩展属性类型

时间:2016-09-07 12:27:37

标签: swift class inheritance protocols

我需要子类中的扩展属性,但此代码不能编译。

protocol A {
}
protocol B: A {
}
protocol C: A {
}

class Base {
    var presenter: A?
}
class Left: Base {
    override var presenter: B?
}
class Right: Base {
    override var presenter: C?
}

如何在Swift 2上实现这个?

1 个答案:

答案 0 :(得分:0)

你不能在swift中覆盖或更改属性类型,但是施放可能对你有所帮助。例如,检查此代码中的Left类:

protocol A {
}
protocol B: A {
}
protocol C: A {
}

class Base {
    var presenter: A?
}


class Left: Base {

    init(persenter : B?) {
        self.presenter = presenter
    }

    func test() {
        print(presenter as! B)
    }
}

class Right: Base {
    var presenter: C?  //WON'T COMPILE
}