Swift 属性协议
2018-04-27 本文已影响50人
maskerII
属性协议:顾名思义、要求遵从者为指定的名称实现属性,但具体实现是实例属性或类型属性并不关心
可以指定要求实现getter 或 getter+setter 属性必须为变量var
protocol FileAccessProtocol {
var readOnly :Bool { get }
var readWrite:Bool { get set}
}
protocol AccessUrlProtocol {
static var link:String { get }
}
protocol FullNameProtocol {
var fName:String {get}
var gName:String {get}
}
struct Student:FullNameProtocol {
var fName: String
var gName: String
}
struct Teadcher:FullNameProtocol {
var fName: String
var gName: String
}
class Master:FullNameProtocol {
var fName: String
var gName: String
init(fName:String, gName:String) {
self.fName = fName
self.gName = gName
}
var des : String {
return self.fName + self.gName
}
}
var student1 = Student(fName:"王",gName:"小明")
student1.fName
student1.gName
var master1 = Master(fName:"李",gName:"刚")
master1.des
//
class SomeBody : FullNameProtocol {
var title: String?
var name: String
init(title:String?,name:String) {
self.title = title
self.name = name
}
var fName: String {
return name
}
var gName: String {
return title ?? "无名小将"
}
var des:String {
return self.fName + self.gName
}
}
var somebody1 = SomeBody(title:"大帝", name:"亚历山大")
somebody1.fName
somebody1.gName
somebody1.des
var nobody = SomeBody(title:nil, name:"小波")
nobody.fName
nobody.gName
nobody.des