SwiftUIのclassを継承するメリットを説明する。
結論
親クラスで作成した箱を子クラスで使い回せる。
具体例
- 親クラス キャラ を定義し、変数やイニシャライザといった箱を記述する。
- 子クラス ゆうしゃ、そうりょ、まほうつかい で親クラスの変数やイニシャライザを使い回す。super.initのsuperは親の意味。
- 定義した子クラスのインスタンスを生成して使う。
import SwiftUI
class キャラ { // ? 1
var なまえ: String
var HP: Int
var MP: Int
var じゅもん: [String]
init(なまえ: String, HP: Int, MP: Int, じゅもん: [String]) {
self.なまえ = なまえ
self.HP = HP
self.MP = MP
self.じゅもん = じゅもん
}
func ステータスを表示する() {
print("なまえ : \(なまえ) HP : \(HP) MP : \(MP) じゅもん : \(じゅもん)")
}
}
class ゆうしゃ: キャラ { // ? 2
init(なまえ: String) {
super.init(なまえ: なまえ, HP: 20, MP: 7, じゅもん:["ニフラム", "ギラ"])
}
}
class そうりょ: キャラ { // ? 2
init(なまえ: String) {
super.init(なまえ: なまえ, HP: 10, MP: 20, じゅもん:["ホイミ", "スカラ"])
}
}
class まほうつかい: キャラ { // ? 2
init(なまえ: String) {
super.init(なまえ: なまえ, HP: 5, MP: 25, じゅもん:["メラ", "ルカニ"])
}
}
struct ContentView: View {
var ヨシヒコ = ゆうしゃ(なまえ: "ヨシヒコ") // ? 3
var いしかわりか = そうりょ(なまえ: "いしかわりか") // ? 3
var ごまき = まほうつかい(なまえ: "ごまき") // ? 3
var body: some View {
Button("ボタンをタップ") {
ヨシヒコ.ステータスを表示する()
いしかわりか.ステータスを表示する()
ごまき.ステータスを表示する()
}
.buttonStyle(.borderedProminent)
}
}
実行するとこうなる。
ボタンをタップすると、ステータスを表示する( )の結果がprintされる。
なまえ : ヨシヒコ HP : 20 MP : 7 じゅもん : ["ニフラム", "ギラ"]
なまえ : いしかわりか HP : 10 MP : 20 じゅもん : ["ホイミ", "スカラ"]
なまえ : ごまき HP : 5 MP : 25 じゅもん : ["メラ", "ルカニ"]
まとめ
SwiftUIのclassを継承するメリットを説明した。
コメント