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

来源:3-2 Swift协议和构造函数

厉害了我

2017-09-25 10:14

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回答

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

    var sex : String?

    梁华建 回复慕粉2348...

    说明这个协议只能被类遵循 不能被结构体等遵循

    2019-01-15 23:19:46

    共 3 条回复 >

玩儿转Swift 2.0(第四季)

Swift泛型、扩展、面向协议编程等,大家真正玩儿转swift

14417 学习 · 25 问题

查看课程

相似问题