(承27/30 I服了U-1)
協定:MoneyTransferProtocol
宣告方法:giveMoney
protocol MoneyTransferProtocol{
func giveMoney()
}
服從協定的第一個類別,實作自己的giveMoney方法
class RichPeople:MoneyTransferProtocol{
func giveMoney() {
print("Give you 100 dollars")
}
}
服從協定的第二個類別,實作自己的giveMoney方法
class NormalPeople:MoneyTransferProtocol{
func giveMoney() {
print("Give you 10 dollars")
}
}
服從協定的第三個類別,實作自己的needMoney方法
class PoorGuy{
//protocol可以用來標示常數或變數的型別
//屬性helper的類別是某個服從MoneyTransferProtocol協定的類別
//?:此屬性可能有也可能沒有
var helper:MoneyTransferProtocol?
//如果helper有值,就執行類別裡的giveMoney方法
func needMoney(){
helper?.giveMoney()
}
}
試用看看
let aPoorGuy = PoorGuy()
//aPoorGuy.needMoney()
let aRichPeople = RichPeople()
let aNormalPeople = NormalPeople()
aPoorGuy.helper = aRichPeople //Print:Give you 100 dollars
aPoorGuy.helper = aNormalPeople //Print:Give you 10 dollars
aPoorGuy.needMoney()