#16 定義兩個類別, 用到繼承, 類別裡包含屬性和方法,在方法裡有使用到屬性,然後用類別生出物件 存取物件的屬性和呼叫物件的方法。

Lou
彼得潘的 Swift iOS / Flutter App 開發教室
4 min readMar 4, 2023

用寶可夢Game Freak親兒子小火龍當作實例

// 定義寶可夢類別
class Pokemon {
var name = String()
var hp = Double()
var attack = Double()
var defense = Double()
var specialAttack = Double()
var specialDefense = Double()
var speed = Double()
var terastal = String()
var type = String()
var type2 = String()

//印出寶可夢基本資料
func baseStats(){
print("\(name) 屬性: \(type)")
if (type2 != ""){
print("\(name) 第二屬性: \(type2)")
}
print("\(name) 太晶化屬性: \(terastal)")
print("\(name) 血量: \(hp)")
print("\(name) 攻擊: \(attack)")
print("\(name) 防禦: \(defense)")
print("\(name) 特攻: \(specialAttack)")
print("\(name) 特防: \(specialDefense)")
print("\(name) 速度: \(speed)")
}

//得到噴射火焰技能
func skillFlamethrower(){
var power = 90.0
if ((type == "火" || type2 == "火") && terastal == "火") {
power = power * 2
} else if(type == "火" || type2 == "火"){
power = power * 1.5
} else if(terastal == "火"){
power = power * 1.5
}
print("\(name) 使出了 噴射火焰 招式威力:\(power)")
}

}

var charmander = Pokemon()
charmander.name = "小火龍"
charmander.type = "火"
charmander.terastal = "火"
charmander.hp = 39
charmander.attack = 52
charmander.defense = 43
charmander.specialAttack = 60
charmander.specialDefense = 50
charmander.speed = 65
charmander.baseStats()
charmander.skillFlamethrower()
捕捉到的小火龍

繼承寶可夢類別的極巨化類別

//極巨化繼承寶可夢類別
class Dynamax: Pokemon {
var dynamax = "超極巨化"

//獲得超強極巨化招式
func skillGMaxWildfire(){
var power = 130.0
if(type == "火" || type2 == "火"){
power = power * 1.5
}
print("\(name)使用極巨腕帶 極巨化成為 \(dynamax+name)")
print("\(dynamax+name) 使出了 超極巨地獄滅焰 招式威力:\(power)")
}
}

var charizard = Dynamax()
charizard.name = "噴火龍"
charizard.type = "火"
charizard.type2 = "飛行"
charizard.terastal = "火"
charizard.hp = 78
charizard.attack = 84
charizard.defense = 78
charizard.specialAttack = 109
charizard.specialDefense = 85
charizard.speed = 100
charizard.baseStats()
charizard.skillFlamethrower()
charizard.skillGMaxWildfire()
極巨化後的噴火龍

--

--