SwiftUI | classを継承するメリット

SwiftUI

SwiftUIのclassを継承するメリットを説明する。

結論

親クラスで作成した箱を子クラスで使い回せる。

具体例

  1. 親クラス キャラ を定義し、変数やイニシャライザといった箱を記述する。
  2. 子クラス ゆうしゃそうりょまほうつかい で親クラスの変数やイニシャライザを使い回す。super.initのsuperは親の意味。
  3. 定義した子クラスのインスタンスを生成して使う。
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を継承するメリットを説明した。

コメント

タイトルとURLをコピーしました