カテゴリ: Swift 更新日: 2025/12/10

Swiftの継承とオーバーライドの基本を解説!初心者でもわかるクラスの再利用と上書きの仕組み

Swift 継承の基本とオーバーライドの方法
Swift 継承の基本とオーバーライドの方法

先生と生徒の会話形式で理解しよう

生徒

「Swiftで“継承”とか“オーバーライド”って言葉を聞いたんですが、なんだか難しそうです…」

先生

「たしかに最初はピンと来ないかもしれないね。でも“継承”は『あるクラスの機能を受け継ぐ』ことで、“オーバーライド”は『受け継いだ機能を上書きする』ことなんですよ。」

生徒

「なるほど…でもどうやって書くのかは分からないです。」

先生

「それじゃあ、Swiftのクラス継承とオーバーライドの使い方を、例を交えて順番に説明していくね!」

1. Swiftにおける継承とは?

1. Swiftにおける継承とは?
1. Swiftにおける継承とは?

Swift(スウィフト)の継承(けいしょう)は、あるクラスの機能を別のクラスが引き継いで使えるようにする仕組みです。

たとえば、「動物」という基本のクラスを作って、それを「犬」や「猫」が引き継げば、共通の動き(例えば歩くなど)を再利用できるようになります。

Swiftで継承を使うときは、: 親クラス名のようにコロンを使って書きます。

2. 継承の基本的な書き方

2. 継承の基本的な書き方
2. 継承の基本的な書き方

次の例では、Animalクラスを親として、Dogクラスがそれを継承しています。


class Animal {
    func speak() {
        print("なにか動物の鳴き声")
    }
}

class Dog: Animal {
}

let d = Dog()
d.speak()

なにか動物の鳴き声

Dogクラスにはspeak()メソッドを書いていませんが、Animalから継承しているので使うことができます。

3. オーバーライド(override)とは?

3. オーバーライド(override)とは?
3. オーバーライド(override)とは?

オーバーライドとは、親クラスで定義されたメソッドを子クラスで上書きして、自分用の処理に変えることです。

Swiftではoverrideというキーワードを使って書きます。


class Dog: Animal {
    override func speak() {
        print("ワンワン!")
    }
}

let dog = Dog()
dog.speak()

ワンワン!

このように、親クラスにあるspeak()メソッドをDogクラスで上書きすることで、オリジナルの鳴き声を出せるようになります。

4. オーバーライドするときの注意点

4. オーバーライドするときの注意点
4. オーバーライドするときの注意点

Swiftでは、必ずoverrideキーワードをつけてオーバーライドしないとエラーになります。

また、親クラスのメソッドがfinalで指定されている場合は、オーバーライドができません。


class Animal {
    final func walk() {
        print("歩いています")
    }
}

class Cat: Animal {
    // このように書くとエラーになる
    // override func walk() { ... }
}

finalは「このメソッドはオーバーライド禁止ですよ」という意味なので、設計上変えてほしくない処理に使われます。

5. プロパティもオーバーライドできる

5. プロパティもオーバーライドできる
5. プロパティもオーバーライドできる

Swiftでは、メソッドだけでなくプロパティ(変数や定数)もオーバーライドすることができます。

たとえば、親クラスのmessageというプロパティを、子クラスで変更する例です。


class Animal {
    var message: String {
        return "なんらかの動物"
    }
}

class Bird: Animal {
    override var message: String {
        return "チュンチュン"
    }
}

let b = Bird()
print(b.message)

チュンチュン

このように、プロパティもoverrideを使って変更可能です。ただし、読み取り専用(getのみ)である必要があります。

6. 親クラスの処理を残したまま追加する

6. 親クラスの処理を残したまま追加する
6. 親クラスの処理を残したまま追加する

子クラスでオーバーライドする際に、親クラスの処理も残しておきたい場合はsuperを使います。

superは「親クラスの処理を呼び出す」という意味です。


class Animal {
    func eat() {
        print("何かを食べています")
    }
}

class Monkey: Animal {
    override func eat() {
        super.eat()
        print("バナナを食べました")
    }
}

let m = Monkey()
m.eat()

何かを食べています
バナナを食べました

このように、superを使うことで、親クラスの処理を活かしながら、自分の処理を追加できます。

7. 継承とオーバーライドを使うメリット

7. 継承とオーバーライドを使うメリット
7. 継承とオーバーライドを使うメリット

Swiftで継承とオーバーライドを使うと、共通処理をまとめて再利用したり、クラスごとの違いを簡単に表現できるというメリットがあります。

たとえば次のようなケースで役立ちます:

  • 動きが似ているけど少しだけ違うオブジェクトを作りたいとき
  • 基本機能は共通で、個別にカスタマイズしたいとき
  • コードの重複を減らして整理したいとき

オブジェクト指向の考え方を理解するうえでも、「継承」と「オーバーライド」はとても大切なキーワードです。

Swiftを基礎から実践レベルまで学びたい人や、 iOSアプリ開発を本格的に始めたい人には、 定番の入門+実践書がこちらです。

Swift実践入門をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

Swiftの継承とオーバーライドは、オブジェクト指向の基本を支えるとても重要な仕組みです。継承を使うことで、共通する性質や動作を親クラスにまとめ、子クラスで再利用できるため、コードの重複を避けながら柔軟な設計が可能になります。また、オーバーライドを用いると、親クラスの動作を自分のクラスに合わせて書き換えられます。こうした仕組みによって、共通の基盤を持ちながらも、細かな違いを表現する豊かなモデル設計ができます。 さらに、Swiftではメソッドだけでなく、プロパティのオーバーライドも行えるため、見せたいメッセージや出力内容をそれぞれのクラスに合わせて適切に変更できます。これにより、クラスごとにふさわしい振る舞いを自然に実現でき、コードの可読性も保たれます。また、親クラスの処理を活かしたまま追加機能を重ねたいときにはsuperを使うことで、ベースの機能に上書きではなく“拡張”という考え方も取り入れることができます。 例えば動物の例に置き換えると、すべての動物が「歩く」という基本動作を持ちながら、犬は「ワンワンと鳴く」、鳥は「チュンチュンとさえずる」といったように個性を出すことができます。このような性質の違いをクラスで表現するとき、継承とオーバーライドはとても強力な手段となります。以下のサンプルコードでは、継承に基づいて異なる動物の動作を表現しつつ、親の共通処理を残しながら自分用の動作を追加する例を示しています。

継承とオーバーライドを組み合わせた応用サンプル


class Animal {
    func speak() {
        print("なにか動物の鳴き声")
    }
    func eat() {
        print("食べています")
    }
}

class Lion: Animal {
    override func speak() {
        print("ガオー!")
    }
    override func eat() {
        super.eat()
        print("お肉を食べました")
    }
}

class Parrot: Animal {
    override func speak() {
        print("こんにちは!")
    }
}

let lion = Lion()
lion.speak()
lion.eat()

let parrot = Parrot()
parrot.speak()

この例でも分かる通り、共通の基礎となる親クラスに対して、子クラスは必要に応じて独自性を持たせつつ振る舞いを変更できます。こうしたクラス構造を利用することで、アプリ内の複雑なモデルや動作を整理し、効率的で理解しやすいプログラム設計が可能になります。継承はあくまで共通部分をまとめる仕組みであり、オーバーライドはその中で個別性を表現する手段です。この両者を上手に使い分けることが、Swiftにおけるオブジェクト指向設計の上達につながります。 最後に、学んだ内容を整理するために、生徒と先生が今日のポイントを振り返る会話を見ていきましょう。理解の確認にも役立つはずです。

先生と生徒の振り返り会話

生徒

「継承って、ただ機能をコピーするんじゃなくて、親の動きをそのまま使える仕組みなんですね。思ったより便利でした!」

先生

「その通り。親クラスに共通の処理をまとめることで、子クラスに重複を書く必要がなくなるんです。」

生徒

「オーバーライドを使えば、同じメソッド名でもクラスごとの違いを自然に表せるのが面白いですね!」

先生

「そうそう。統一した書き方で呼べるのに、実際に動く内容はクラスごとに変わる。これがオブジェクト指向のメリットですよ。」

生徒

「superを使うと親の動作も残したまま追加できるのも便利ですね。応用が広がりそうです。」

先生

「その考え方ができていれば大丈夫。これからもっと複雑なクラス設計でもスムーズに理解できるようになりますよ。」

関連セミナーのご案内

Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略

Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略

「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。

Windowsで実現する開発環境

【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。

【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。

この60分で得られる3つの理解

1. WindowsでのSwift実行環境の作り方

OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。

2. Swiftの基本構造(変数・型・定数)

iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。

3. アプリエンジニアとしてのロードマップ

将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。

※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。

セミナー画像

Windowsで始めるiPhoneアプリ開発入門

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説