问答详情
源自:3-2 Swift协议和构造函数

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)一定会报错

提问者:厉害了我 2017-09-25 10:14

个回答

  • 慕粉2348563550
    2017-10-03 11:37:05
    已采纳

    var sex : String?