0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kotlinの「継承」を学ぶ

Posted at

継承とは何か?

あるクラスが他のクラスの機能を引き継ぐ機能のこと。プロパティやメソッドを新しいクラスを作成する際に、拡張したり、機能を上書き(オーバーライド)することができる。

Kotlinの継承ルール

Kotlinでは、デフォルト状態ではクラスを継承することができない
継承をするためにはopenキーワードを使ってクラスを宣言する必要がある。

継承の例

Animalという親クラスを作成し、それを継承するDogクラスを作成した。
sound()メソッドをオーバーライドしており、Dog独自の動作を持たせている。

// 親クラス
open class Animal {
    open fun sound() {
        println("Animal makes a sound")
    }
}

// 子クラス
class Dog : Animal() {
    override fun sound() {
        println("Dog barks")
    }
}

fun main() {
    val myDog = Dog()
    myDog.sound()  // 出力: "Dog barks"
}

  • openキーワード
    クラスやメソッドを継承可能にさせるために使用するキーワード。openをつけないとKotlinでは継承を行うことができないため注意。

  • overrideキーワード
    親クラスのメソッドを子クラスで上書き(オーバーライド)するために使用するキーワード。

プロパティの継承

メソッドだけではなく、プロパティも継承して、オーバーライドすることができる。

open class Animal {
    open val type: String = "Animal"
}

class Bird : Animal() {
    override val type: String = "Bird"  // プロパティのオーバーライド
}

fun main() {
    val bird = Bird()
    println(bird.type)  // 出力: "Bird"
}

抽象クラス

完全に実装されていないメソッドを持つ抽象クラスを定義することができる。abstractキーワードを使って定義し、直接インスタンス化はできないようになっている。
抽象クラス内のメソッドはサブクラスで必ずオーバーライドする必要がある。

abstract class Animal {
    abstract fun sound()  // 実装されていない抽象メソッド
}

class Lion : Animal() {
    override fun sound() {
        println("Lion roars")
    }
}

fun main() {
    val lion = Lion()
    lion.sound()  // 出力: "Lion roars"
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?