【Swift入門】継承を使って新しいクラスを作る

2021年4月4日

継承とは

継承とはクラスのプロパティやメソッドを引き継いで新しいクラスを作ることをいいます。

例えば『Monster』というクラスがあって、

そのプロパティとして『kind = “モンスター”』

メソッドとして『bodyBrow』という

『たいあたり』をするものがあったとします。

この『Monster』というクラスを継承して

『Dragon』というクラスを作った場合、

Dragonは『Monster』の

プロパティとメソッドを引き継ぎます。

今回だと『kind = “モンスター”』というプロパティと

『bodyBrow』というメソッドを

引き継ぎます。

引き継がれたプロパティとメソッドは、引き継がれたクラスでも使うことができます。

また、クラスは複数回引き継ぐことができます。

例えば、『Monster』というクラスは

『Dragon』の他に『Slime』というクラスにも

継承することができます。

この場合、『Slime』も『Dragon』と同じように『Monster』の

『kind = “モンスター”』というプロパティと

『bodyBrow』というメソッドを

継承します。

『Monster』のように継承元となるクラスを『superclass』

Dragonや『Slime』のように継承する方のクラスを『subclass』と呼びます。

継承は

class クラス名: 継承元クラス {
   
}

と記述します。

実際に使ってみる

それでは、継承を実際に使ってみましょう。

新しくplaygroundを作って空にしてください。

今回は、先ほど説明に使った、『Monster』、『Dragon』、『Slime』という三つのクラスを作って、使ってみようと思います。

まずは、継承元となる、『Monster』クラスを作ってみましょう。

class Monster {
    var kind = “モンスター”
   
    func bodyBlow() {
        print(“たいあたり”)
    }
}

と記述しましょう。

コードについて説明していきます。

まず、『Monster』という名前でクラスを作っています。

クラスの中には『kind』というプロパティがあり、

その中にはString型で『モンスター』という値が格納されています。

また、メソッドとして『bodyBrow』というものがあり、

コンソールに『たいあたり』と出力するといった内容です。

次にこの『Monster』というクラスを継承した『Dragon』というクラスと『Slime』というクラスを作ってみましょう。

class Dragon: Monster {
    func fireBreath() {
        print(“火の息を吐く”)
    }
}

class Slime: Monster {
    func recovery() {
        print(“回復する”)
    }
}

と記述しましょう。

これらのクラスは先ほど作った『Monster』というクラスを

継承しているので、

クラス『Monster』の『kind』プロパティと

『bodyBlow』メソッドを

保持しています。

また、それぞれのクラスで独自にメソッドを持たせています。

『Dragon』の方は『fireBreath』という名前

コンソールに『火の息を吐く』と表示させるメソッドです。

『Slime』の方は『recover』という名前の

コンソールに『回復する』と表示させるメソッドです。

それでは、DragonとSlimeのインスタンスを作って、それぞれのプロパティとメソッドを使ってみましょう。

まずは、Dragonの方からやっていきます。

var dragon = Dragon()
print(dragon.kind)
dragon.bodyBlow()
dragon.fireBreath()

と記述しましょう。

コードについて説明していきます。

まず、

var dragon = Dragon()

という記述では、Dragonというクラスのインスタンスを作っています。

次に

print(dragon.kind)

という記述ではdragonのkindプロパティの値を出力します。

kindプロパティはMonsterクラスから引き継いだので『モンスター』という値が格納されています。

次に

dragon.bodyBlow()

という記述では、dragonのbodyBlowというメソッドを使います。

bodyBlowはMonsterクラスから引き継いだもので、

コンソールに『たいあたり』と出力します。

次に

dragon.fireBreath()

という記述ではDragonクラスで記述した『fireBreath』というメソッドを使います。

このメソッドではコンソールに『火の息を吐く』と出力します。

それでは、実行してみましょう。

この状態で実行したら、コンソールには、『モンスター』、『たいあたり』、『火の息を吐く』と出力されるはずです。

実行ボタンを押してください。

すると、予想通り、コンソールには『モンスター』、『たいあたり』、『火の息を吐く』と出力されましたね。

次にSlimeクラスでも同じことをやってみましょう。

var slime = Slime()
print(slime.kind)
slime.bodyBlow()
slime.recovery()

と記述しましょう。

この状態で実行すると、『モンスター』、『たいあたり』、『回復する』とコンソールに表示されるはずです。

実行ボタンを押してみましょう。

すると、予想通り『モンスター』、『たいあたり』、『回復する』とコンソールに出力されましたね。

このように継承を使えば、クラスのプロパティやメソッドを引き継いだ新しいクラスを作ることができます。