加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

强制子类实现协议swift

发布时间:2020-12-14 04:42:00 所属栏目:百科 来源:网络整理
导读:我如何强制子类实现父类中声明的协议? 我试过这个: protocol MyProtocol { var myVar : String { get }}class ParentClass: MyProtocol { var myVar = "parent"}class ChildClass: ParentClass {} 但我的孩子班并没有强迫我覆盖myVar. 这个有可能 ? 非常
我如何强制子类实现父类中声明的协议?

我试过这个:

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"
    }

}

希望这可以帮助…!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读