我正试图在Swift中实现一个干净的OOP结构。 Swift 1.2和苹果新的面向协议编程接受似乎应该是可能的。允许子类使用子类代理
我有一个类A有它自己的委托ADelegate。 A本身会调用ADelegate的方法。
两个子类继承A:B和C. B有一些委托方法,只有它应该能够调用,所以它希望它自己的委托BDelegate继承ADelegate并添加了一些方法。同样,C想让它的委托成为CDelegate,继承ADelegate并添加一些方法。
最简洁的方式来构造这将给A属性var delegate: ADelegate
。然后,不知何故,B和C分别获得属性override var delegate: BDelegate
和override var delegate: CDelegate
。这样他们既可以使用ADelegate公开的方法,也可以使用自己的特定实现。但是,Swift不让我编译它,因为我无法重写一个属性并为其指定一个不同的类型。
我知道我可以在子类上创建一个不同的命名委托属性,所以没有冲突。我也知道,我可以让孩子班级代表,但这是一个昂贵的操作,并不是很干净。
它感觉像他们应该是一个协议导向的方式来处理这个。总而言之,目标是允许子类覆盖具有更多特定类型的超类的属性。有任何想法吗?