protocol transferMoney {
func giveMoney()
}
class richPeople:transferMoney {
func giveMoney(){
print("give you 100 dollars")
}
}
class poorPeople {
let poorPerson:transferMoney?
// protocol也可以當作變數的類別,而意思為此變數的屬性是某一個繼承transferMoney的類別,而?代表這個屬性可能有可能沒有,所以後面我們會把poorPeopl丟給一個有繼承transferMoney的類別,這樣他就可以使用protocol的方法了
func giveMeNomey{
poorGuy?.giveMoney()
// 為什麼可以這樣寫?因爲poorGuy是某一個服從transferMoney的類別,若有值的話就可以使用protocol的方法,也就是func giveMoney(),若沒有值則不會做事。
}
}
實體化
let richGuy = richPeople()
let poorGuy = poorPeople()
poorGuy.poorPerson = richGuy
// 此時把放到具有protocol transferMoney連結的類別,這已經可以使用 func giveMoney()的方法了
poorGuy.giveMoney()
//
// give you 100 dollars