カテゴリ: Kotlin 更新日: 2025/10/18

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

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

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

生徒

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

先生

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

生徒

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

先生

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

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

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

プログラミングで「継承(けいしょう)」とは、あるクラスの性質や機能を別のクラスが引き継ぐことを意味します。

例えば、「動物」という親クラスがあり、その子クラスとして「犬」や「猫」がいるようなイメージです。

親クラスをKotlinでは「スーパークラス」、子クラスは「サブクラス」と呼びます。

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

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

親クラスはopenキーワードを使って作ります。Kotlinでは、デフォルトではクラスは継承できないようになっているため、継承を許可するにはopenが必要です。


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

上記が親クラス(スーパークラス)です。

次に、それを継承する子クラス(サブクラス)を作ります。


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

: Animal()と書くことでAnimalクラスを継承しています。

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

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

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


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

眠っています
ワンワン!

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

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の継承とは、親クラスの機能や性質を子クラスが引き継ぐ仕組みです。親クラスは共通の動作を定義し、子クラスはそれを使ったり、変更したりできます。
関連記事:
カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!