カテゴリ: Kotlin 更新日: 2026/01/29

Kotlinの継承の基本!親クラス・子クラスの関係とoverrideの使い方を初心者向けに徹底解説

Kotlinの継承の基本!親クラス・子クラスの関係とoverrideの使い方
Kotlinの継承の基本!親クラス・子クラスの関係とoverrideの使い方

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

生徒

「Kotlinの継承ってどういうことなんですか?親クラスとか子クラスって聞くけど難しそう…」

先生

「Kotlinの継承は、あるクラスの機能を別のクラスが引き継いで使える仕組みです。親から子に知識を渡すようなイメージですね。」

生徒

「なるほど。でも、実際にどうやって書けばいいのか分かりません…」

先生

「それでは、Kotlinの継承の書き方や、overrideの使い方を一つずつ丁寧に見ていきましょう!」

1. Kotlinにおける継承(けいしょう)とは?

1. Kotlinにおける継承(けいしょう)とは?
1. Kotlinにおける継承(けいしょう)とは?

プログラミングで「継承(けいしょう)」とは、あるクラスが持つ機能や性質を、別のクラスに引き継いで使えるようにする仕組みのことです。

たとえば、動物には「眠る」「鳴く」といった共通の動きがありますよね。この共通部分をまとめて「動物」という親クラスにしておき、それをもとに「犬」「猫」などの子クラスが作られる、というイメージです。

整理すると、親になるクラスをKotlinでは「スーパークラス」、そこから生まれる子のクラスを「サブクラス」と呼びます。スーパークラスの機能をコピーして使えるので、同じ処理を何度も書かなくてもよくなり、とても便利です。

たとえば、こんな簡単なコードで考えてみましょう。


open class Animal {
    fun sleep() {
        println("動物が眠っています")
    }
}

class Dog : Animal() // Animalを継承

Dogクラスには何も書いていませんが、Animalを継承しているので、中にあるsleep()をそのまま使うことができます。


fun main() {
    val dog = Dog()
    dog.sleep()
}

動物が眠っています

このように、継承を使うことで共通部分をまとめて再利用でき、コードがスッキリします。まずは「親クラスの機能を、子クラスがそのまま使える仕組み」と覚えておけば大丈夫です。

2. 親クラスと子クラスを定義する基本構文

2. 親クラスと子クラスを定義する基本構文
2. 親クラスと子クラスを定義する基本構文

実際に継承を書くときは、まず「親クラス」を作るところから始まります。Kotlinでは、親クラスをそのままでは継承できないため、openキーワードをつけることで「このクラスは継承していいよ」という宣言をします。


open class Animal {
    fun sleep() {
        println("動物が眠っています")
    }
}

これがスーパークラスです。中には「動物なら誰でも持っていそうな行動」をまとめておくイメージです。

次に、Animalを継承したサブクラスを作ります。書き方はとてもシンプルで、クラス名の後ろに: 親クラス名()と書くだけです。


class Dog : Animal() {
    fun bark() {
        println("ワンワン!")
    }
}

たったこれだけで、DogAnimalの持っているsleep()を自動的に使えるようになります。

実際に呼び出すとどうなるのか、確認してみます。


fun main() {
    val dog = Dog()
    dog.sleep() // 親クラスの機能
    dog.bark()  // 子クラス固有の機能
}

動物が眠っています
ワンワン!

このように、親クラスで定義した関数を、子クラス側で特別な設定なしに使えるのが継承の大きな特徴です。「親クラスで共通の処理」「子クラスで自分だけの処理」と分けて書くことで、コードが整理しやすくなります。

3. 子クラスで親クラスの関数を使う

3. 子クラスで親クラスの関数を使う
3. 子クラスで親クラスの関数を使う

親クラスの機能は、子クラスでもそのまま使うことができます。


fun main() {
    val dog = Dog()
    dog.sleep()
    dog.bark()
}

眠っています
ワンワン!

sleep()は親クラスの関数ですが、子クラスのDogでも使えるのがポイントです。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

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

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

override(オーバーライド)は、親クラスで定義された関数を、子クラスで書き換える(上書きする)ときに使うキーワードです。

親のルールを子どもが自分なりに変えるようなイメージです。


open class Animal {
    open fun makeSound() {
        println("何かの動物の鳴き声")
    }
}

class Cat : Animal() {
    override fun makeSound() {
        println("ニャー!")
    }
}

5. overrideで動作を変えてみよう

5. overrideで動作を変えてみよう
5. overrideで動作を変えてみよう

先ほどのmakeSound()を実際に呼び出すと、次のような動作になります。


fun main() {
    val cat = Cat()
    cat.makeSound()
}

ニャー!

このように、親クラスのmakeSound()ではなく、子クラスでoverrideされた内容が実行されます。

6. overrideにはルールがある

6. overrideにはルールがある
6. overrideにはルールがある

親クラスの関数をoverrideするには、その関数もopenで宣言されている必要があります。

openは「この関数は子クラスで書き換えていいよ」という意味です。

逆に、openがついていない関数は、overrideできません。

7. overrideとsuperの使い方

7. overrideとsuperの使い方
7. overrideとsuperの使い方

superキーワードを使うと、親クラスの関数を呼び出すことができます。つまり「もとの機能+自分の機能」を組み合わせることができるんです。


open class Animal {
    open fun greet() {
        println("こんにちは!")
    }
}

class Bird : Animal() {
    override fun greet() {
        super.greet()
        println("チュンチュン!")
    }
}

fun main() {
    val bird = Bird()
    bird.greet()
}

こんにちは!
チュンチュン!

super.greet()で親のgreet()を実行したあと、Bird独自のメッセージも追加しています。

8. 実生活に例えるKotlinの継承とoverride

8. 実生活に例えるKotlinの継承とoverride
8. 実生活に例えるKotlinの継承とoverride

親クラスは「共通の特徴」をまとめた設計図、子クラスは「それをもとに作られた実物」と考えるとわかりやすいです。

例えば、「乗り物」という親クラスがあれば、そこから「車」や「自転車」などを継承して、それぞれに合った動き(override)をさせることができます。

Kotlinの継承とoverrideは、コードを整理しやすく、再利用しやすくするためにとても大切な考え方です。

まとめ

まとめ
まとめ

Kotlinにおける継承(けいしょう)は、親クラス(スーパークラス)の機能や性質を子クラス(サブクラス)が引き継いで再利用する仕組みです。この記事では、Kotlinのクラス継承の基本から、openキーワードによる継承の許可、overrideによる関数の上書き方法、さらにsuperを使った親クラスの呼び出しなど、実際のコードを交えて分かりやすく解説しました。

Kotlinでは、デフォルトですべてのクラスは継承不可になっているため、継承したいクラスにはopenを付ける必要があります。これはJavaとは異なるKotlin独自のルールで、安全性を高めるための仕組みです。
また、親クラスの関数を子クラスで上書き(オーバーライド)したい場合には、親の関数にもopenをつけ、子ではoverrideを記述します。このようなルールを守ることで、意図しない動作やエラーを防ぎながら柔軟に機能を拡張できます。

実際のコード例として、「動物(Animal)」という親クラスを作成し、そこから「犬(Dog)」「猫(Cat)」「鳥(Bird)」といった子クラスを継承し、それぞれが固有の動作を持つ形を実装しました。こうした設計を使えば、コードの再利用性が高まり、プログラムが整理されてメンテナンスしやすくなります。

さらに、superを使うことで、親の動作に子独自の動作を追加することも可能です。たとえば、「こんにちは!」という挨拶を基本としつつ、「チュンチュン!」という鳥独自のメッセージを追加するなど、拡張性の高いコードを書くことができます。

Kotlinの継承は、単にコードを短くするためだけでなく、「共通のルールをベースに、個別の特徴を加えていく」ための重要な考え方です。これからプログラムを大きく作っていく場面では、この継承とoverrideの使い方がとても重要になりますので、しっかりと理解しておきましょう。

サンプル:Kotlinの継承とoverrideの応用


open class Vehicle {
    open fun move() {
        println("移動中")
    }
}

class Car : Vehicle() {
    override fun move() {
        super.move()
        println("車で走っています")
    }
}

fun main() {
    val car = Car()
    car.move()
}

このコードでは、VehicleクラスをCarクラスが継承しており、move()関数をoverrideしつつ、super.move()で親の処理も呼び出しています。Kotlinの継承とoverrideの基本をしっかり活用した例です。

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

生徒

「Kotlinの継承って、親クラスの機能を引き継げるっていうことなんですね!」

先生

「その通りです。親から子へと機能を渡すことで、同じコードを繰り返さずに済みますし、プログラムの構造もきれいになりますよ。」

生徒

「でも、全部勝手に継承できるわけじゃないんですね。openって書かないとダメなんですね。」

先生

「そうです。Kotlinでは、安全性を重視して、明示的に継承を許可するようにしています。overrideも同じで、親の関数がopenじゃないと上書きできません。」

生徒

superを使えば、親の動きもそのまま使えるのが便利ですね。組み合わせもできるから自由度が高いなと思いました!」

先生

「継承とoverrideをうまく使えば、共通の機能は親にまとめて、個性は子で追加するという考え方ができます。今後の開発にも必ず役立ちますよ。」

生徒

「はい!今回の例をベースに、もっと複雑なクラスも作ってみたくなりました!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Kotlinの継承とは何ですか?親クラスや子クラスの意味も教えてください

Kotlinの継承とは、親クラスの機能や性質を子クラスが引き継ぐ仕組みです。親クラスは共通の動作を定義し、子クラスはそれを使ったり、変更したりできます。

Kotlinでクラスを継承するにはどんな書き方をしますか?

Kotlinでクラスを継承するには、親クラスをopenキーワードで定義し、子クラスで「: 親クラス名()」と書いて継承します。
関連記事:
カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New2
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
New3
Swift
Swiftでエラー原因を可視化!ログとトレースのベストプラクティスを初心者向けに解説
New4
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク