为了账号安全,请及时绑定邮箱和手机立即绑定

swift 3.0 关于协议中定义init的问题

protocol Pet : class

{
        var name : String {get set}
        init (name : String)
}

class Dog : Pet
{
        var name : String
        //    这个sex不想给默认值
        var sex : String

        //    实现Pet协议的init
        init (name : String)
        {
                self.name = name

              //    这里会报错,因为没有给sex初始化

        }
}

上面的代码,如果在协议(Pet)里面规定了一个构造函数(init (name : String))

在使用它的类(Dog)中又有自己的没有默认值的变量(sex : String),假如这个变量就是不适合给默认值

那构造函数怎么写???实现协议的构造函数又不可以给自己的变量赋值,因为参数列表规定就是(name : String)

那在Dog类实现的Pet协议规定的init (name : String)一定会报错

正在回答

1 回答

var sex : String?

0 回复 有任何疑惑可以回复我~
#1

厉害了我 提问者

机智
2017-10-07 回复 有任何疑惑可以回复我~
#2

梁华建 回复 慕粉2348563550

说明这个协议只能被类遵循 不能被结构体等遵循
2019-01-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

swift 3.0 关于协议中定义init的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信