//协议的声明protocolPerson{
var name: String { getset}
var age: Int { get }
}
//类遵守协议classStudent: Person{
var name : Stringvar age : Intinit(){
name = ""
age = 0
}
}
//协议中的关联类型protocolPerson{
associatedtypeUnknownTypevar name: String { getset}
var age: Int { get }
var weight: UnknownType { get }
}
classStudent: Person{
var name : Stringvar age : Intvar weight: Doubleinit(){
name = ""
age = 0
weight = 0.0
}
}
//协议的继承性protocolPerson{
associatedtypeUnknownTypevar name : String {getset}
var age : Int {getset}
var weight: UnknownType { get }
funcpersonDescription()
}
protocolStudent{
var school : String {getset}
funcstudentDescription()
}
protocolGraduate : Person, Student{
var supervisor : String {getset}
funcgraduateDescription()
}
classComputerAssociationMember : Graduate{
var name : String = ""var age : Intvar weight: Doublevar school : Stringvar supervisor : StringfuncpersonDescription() {
print("It's person description")
}
funcstudentDescription() {
print("It's student description")
}
funcgraduateDescription() {
print("It's graduate description")
}
init(name : String, age : Int, weight: Double, school : String, supervisor :String){
self.name = name
self.age = age
self.weight = weight
self.school = school
self.supervisor = supervisor
}
}
let theMember = ComputerAssociationMember(name: "Tom", age: 23, weight: 69.2, school: "BUAA", supervisor: "Ian")
theMember.personDescription()
theMember.studentDescription()
theMember.graduateDescription()