深入解析Swift语言中的协议

2020-01-08 22:38:09王旭

res.print()


当我们使用 playground 运行上面的程序,得到以下结果。

 


Wednesday

初始化程序要求
Swift 允许用户初始化协议遵循类似于正常初始化类型的一致性。

语法

复制代码
protocol SomeProtocol {
   init(someParameter: Int)
}
示例
复制代码
protocol tcpprotocol {
   init(aprot: Int)
}
协议初始化程序要求类实现
指定或初始化便捷允许用户初始化协议来预留“required”关键字,以符合其标准。
复制代码
class SomeClass: SomeProtocol {
   required init(someParameter: Int) {
      // initializer implementation statements
   }
}

 

protocol tcpprotocol {
   init(aprot: Int)
}

class tcpClass: tcpprotocol {
   required init(aprot: Int) {
   }
}


协议一致性保证所有子类显式或继承实现“required”修辞符。

 

当一个子类覆盖其超类的初始化必须由“override”修饰符关键字指定。

复制代码
protocol tcpprotocol {
   init(no1: Int)
}

 

class mainClass {
   var no1: Int // local storage
   init(no1: Int) {
      self.no1 = no1 // initialization
   }
}

class subClass: mainClass, tcpprotocol {
   var no2: Int
   init(no1: Int, no2 : Int) {
      self.no2 = no2
      super.init(no1:no1)
   }
   // Requires only one parameter for convenient method
   required override convenience init(no1: Int)  {
      self.init(no1:no1, no2:0)
   }
}
let res = mainClass(no1: 20)
let print = subClass(no1: 30, no2: 50)

println("res is: (res.no1)")
println("res is: (print.no1)")
println("res is: (print.no2)")