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

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 回复 厉害了我 提问者

想咨询一下 protocol Pet : class 后面的这个class是什么意思?
2017-11-05 回复 有任何疑惑可以回复我~
#3

梁华建 回复 慕粉2348563550

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

举报

0/150
提交
取消

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

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号