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?

More than 1 year has passed since last update.

【Kotlin入門】抽象メソッドとポリモーフィズムを理解しよう

Posted at

この記事では、Kotlinでの抽象メソッドとポリモーフィズムについて解説していきます。抽象メソッドとポリモーフィズムは、オブジェクト指向プログラミングの重要な概念です。コードの再利用性や拡張性を高めるために、ぜひ覚えておきましょう。

抽象メソッドとは

抽象メソッドとは、具体的な処理内容を定義しないメソッドのことです。抽象メソッドは、abstractキーワードを付けて宣言します。例えば、以下のようにAnimalクラスにspeakという抽象メソッドを定義することができます。

abstract class Animal {
    // speakという抽象メソッド
    abstract fun speak()
}

抽象メソッドを持つクラスは、必ずabstractキーワードを付けて宣言しなければなりません。また、抽象クラスはインスタンス化できません。抽象クラスを継承したサブクラスで、抽象メソッドをオーバーライドして具体的な処理内容を定義する必要があります。例えば、以下のようにDogクラスとCatクラスでspeakをオーバーライドすることができます。

// DogクラスはAnimalクラスを継承する
class Dog : Animal() {
    // speakをオーバーライドして具体的な処理内容を定義する
    override fun speak() {
        println("ワンワン")
    }
}

// CatクラスもAnimalクラスを継承する
class Cat : Animal() {
    // speakをオーバーライドして具体的な処理内容を定義する
    override fun speak() {
        println("ニャー")
    }
}

抽象メソッドをオーバーライドするときは、overrideキーワードを付ける必要があります。また、抽象メソッドのパラメータや戻り値の型は、親クラスと同じでなければなりません。

ポリモーフィズムとは

ポリモーフィズムとは、多様性や多形性という意味で、同じ型の変数やメソッドが、実行時に異なる振る舞いをすることを言います。ポリモーフィズムを利用すると、コードの可読性や拡張性を高めることができます。例えば、以下のようにAnimal型の変数に、Dog型やCat型のインスタンスを代入することができます。

fun main() {
    val animal1: Animal = Dog() // Animal型の変数にDog型のインスタンスを代入
    val animal2: Animal = Cat() // Animal型の変数にCat型のインスタンスを代入

    animal1.speak() // Dogクラスのspeakが呼び出される
    animal2.speak() // Catクラスのspeakが呼び出される
}

このように、同じ型の変数やメソッドでも、実行時に代入されたインスタンスの型に応じて、異なる処理が行われます。これがポリモーフィズムです。ポリモーフィズムを使うと、親クラス型の変数やメソッドでサブクラスのインスタンスを扱えるようになります。これによって、コードの柔軟性や再利用性が向上します。

まとめ

この記事では、Kotlinでの抽象メソッドとポリモーフィズムについて、初心者向けに解説しました。抽象メソッドとは、具体的な処理内容を定義しないメソッドで、サブクラスでオーバーライドする必要があります。ポリモーフィズムとは、同じ型の変数やメソッドが、実行時に異なる振る舞いをすることで、コードの可読性や拡張性を高めることができます。これらの概念は、オブジェクト指向プログラミングの基礎ですので、ぜひ覚えておいてください。

Source: Conversation with Bing, 2023/9/20
(1) Kotlin Serialization ガイド 第4章 ポリモフィズム - Qiita. https://qiita.com/guijiu/items/b177808b03b59f76c8ee.
(2) 【Kotlin入門】オーバーロードとポリモーフィズムについて .... https://kotlin-study.com/overload-polymorphism/.
(3) 【初学者向け】ポリモーフィズムをわかった気になろう! - Qiita. https://qiita.com/yuta_931214/items/a588e9d7bd8872aedb9c.

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?