/*
@H_404_4@ 作用: @H_404_4@ 1、Protocol(协议)用于统一方法和属性的名称,而不实现任何功能。 @H_404_4@ 2、协议能够被类,枚举,结构体实现,满足协议要求的类型被称为协议的遵循者。 @H_404_4@ 3、遵循者需要提供协议指定的成员,如属性,方法,操作符,下标等
protocol 协议名 {
@H_404_4@ 属性、方法等}
@H_404_4@ struct 类型:协议一,协议二 { @H_404_4@ 协议中的属性及方法的实现class 类型:父类,协议一,协议二 {
@H_404_4@ }说明:
@H_404_4@ 1、协议本身不实现任何功能,但你可以将它当做类型来使用 @H_404_4@ 2、协议也可以继承一个或多个(用逗号隔开)其它协议 @H_404_4@ 3、协议中也可添加可选的属性或方法,并且只对类有效 @H_404_4@ (协议前添加@objc说明是可选的,属性或方法前添加optional)*/
@objc protocol AddProtocol {
//只读
var a:Int {get}
//可读可写
var b:Int {getset}
//普通方法
func add() ->Int
@objcoptional var c:Int {get}
@objcoptional func optionalFunc()
}
protocol SubProcotol {
func sub()->Int
}
class Calculate: @H_480_301@NSObject,AddProtocol,SubProcotol {
var a:Int {
return100
}
var b:Int = 0
func add() ->Int {
returna+b
}
func sub() ->Int {
returna-b
}
}
var calc = Calculate()
//calc.a = 100
calc.b =200
print(calc.add())
print(calc.sub())
let c2 = calcas AddProtocol
@H_404_4@ //这样调用会前置解包,解包失败会崩溃//c2.optionalFunc!()
@H_404_4@ //这样调用会隐式解包,解包失败返回nilc2.optionalFunc?()