我如何强制子类实现父类中声明的协议?
我试过这个:
protocol MyProtocol { var myVar : String { get } } class ParentClass: MyProtocol { var myVar = "parent" } class ChildClass: ParentClass { }
但我的孩子班并没有强迫我覆盖myVar.
这个有可能 ?
非常感谢你,
摩根
解决方法
据我所知,这在Swift中是不可能的.如果您尝试符合父类的协议,则会导致错误“无法使用存储的属性覆盖”.由于协议已经在parentClass中符合.
protocol MyProtocol { var myVar : String { get } } class ParentClass: MyProtocol { var myVar = "parent" } class ChildClass: ParentClass { var myVar = "hello" // Throws compilation error,"Cannot override with a stored property" since it's already conformed by the parentClass itself. }
添加:
一般来说,界面的多级实现是不可能的,在iOS中,协议应该只在单个级别实现.但由于您继承了parentClass,因此childClass具有访问parentClass成员的作用域.
class ChildClass: ParentClass,MyProtocol { func printValue(){ println("newvalue : \(myVar)") myVar = "hello" } }
希望这可以帮助…!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。