English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Kotlin クラスとオブジェクト

この記事では、Kotlinのオブジェクト指向型プログラミングについて紹介します。クラスとは何か、オブジェクトの作成方法、プログラム内での使用方法について学びます。

Kotlinは関数とオブジェクト指向型プログラミングをサポートしています。

Kotlinは以下のような機能をサポートしています高階関数データの封装関数型 継承 ラムダ関数のクラスの関数、これにより、関数型プログラミングスタイルを使用する理想の選択肢となります。これらの概念についての詳細は後の章で学びます。本文ではKotlinのオブジェクト指向型プログラミングスタイルに焦点を当てます。

オブジェクト指向型プログラミング(OOP)

在面向对象的编程风格中,可以通过创建对象将复杂的问题分为较小的集合。

面向对象的编程スタイルでは、オブジェクトを作成することで複雑な問題をより小さなセットに分割することができます。

  • これらのオブジェクトには二つの特徴があります:

  • 状態

行動

  1. 以下にいくつかの例を挙げます:

    • Lamp(灯)はオブジェクトです

    • on(点灯)またはoff(消灯)の状態にあります。

  2. turn on(開灯)とturn off(消灯)(行動)ができます。

    • Bicycleはオブジェクトです

    • ギアボックス、二つの車輪、ギアの数などの状態があります。

ブレーキ、アクセル、シフトなどの行動があります。次に、面向对象的编程的详细功能,例如:データの封装 継承 および多態性

。この記事では、単純な基礎知識に焦点を当てます。

Kotlin クラス

Kotlinでオブジェクトを作成する前に、クラスを定義する必要があります。

クラスはオブジェクトの設計図です。

同じ説明で多くの家が建てられるので、クラスを家の設計図(プロトタイプ)と見ることができます。これらの詳細に基づいて、家を建てます。家はオブジェクトです。

Kotlinでクラスをどう定義するか?

Kotlinでクラスを定義するには、classキーワードを使用します:

class ClassName {
    // 属性
    // メンバーファンクション
    ... .. ...
}

これはその一例です:

class Lamp {
    //属性(データメンバー)
    private var isOn: Boolean = false
    // メンバーファンクション
    fun turnOn() {
        isOn = true
    }
    // メンバーファンクション
    fun turnOff() {
        isOn = false
    }
}

ここでは、Lampという名前のクラスを定義しています。

このクラスにはisOn属性(変数の定義方法と同じ)とturnOn()、turnOff()メンバーファンクションが含まれています。

Kotlinでは、属性を初期化するかabstractとして宣言する必要があります。上記の例では、isOn属性はfalseで初期化されています。

クラス、オブジェクト、属性、メンバーファンクションなどは可见性修飾子を持ちます。例えば、isOn属性はプライベートです。これは、isOn属性はLampクラス内でのみ変更できることを意味します。

他の可见性修飾子には:

  • private - クラス内のみ可见(アクセス可能)

  • public - どこからでも可见

  • protected - クラスおよびそのサブクラスに対して可见

  • internal - モジュール内のいかなるクライアントもそれらにアクセスできます。

後で学ぶでしょうKotlin 可視性修飾子この記事でprotectedとinternal修飾子について学びます。

可见性修飾子が指定されていない場合、デフォルトではpublicが適用されます。

上記のプログラムでは、turnOn()とturnOff()メンバーファンクションは公共ですが、isOn属性はプライベートです。

Kotlin オブジェクト

クラスを定義する際には、オブジェクトの規範のみを定義し、メモリやストレージ空間は割り当てられません。

クラスで定義されたメンバーにアクセスするには、オブジェクトを作成する必要があります。Lamp クラスのオブジェクトを作成してみましょう。

class Lamp {
    // 属性(データメンバー)
    private var isOn: Boolean = false
    // メンバーファンクション
    fun turnOn() {
        isOn = true
    }
    // メンバーファンクション
    fun turnOff() {
        isOn = false
    }
}
fun main(args: Array<String>) {
    val l1 = Lamp() // Lamp クラスの l1オブジェクト
    val l2 = Lamp() // Lamp クラスの l2オブジェクト
}

このプログラムは 2つのオブジェクト l1と l2クラス Lamp。この isOn は 2つのランプの機能を表します。1と l2は false になります。

メンバーにどうアクセスするか?

クラスの属性やメンバーファンクションにアクセスするには、. 符号を使用できます。例えば、

l1.turnOn()

このステートメントはオブジェクト l1 の turnOn() ファンクション。

次に、例を示します:

l2.isOn = true

ここでは、オブジェクト l2 の isOn 属性。isOn プロパティは private であり、isOn に外部からアクセスを試みると例外が発生します。

例:Kotlin クラスとオブジェクト

class Lamp {
    // 属性(データメンバー)
    private var isOn: Boolean = false
    // メンバーファンクション
    fun turnOn() {
        isOn = true
    }
    // メンバーファンクション
    fun turnOff() {
        isOn = false
    }
    fun displayLightStatus(lamp: String) {
        if (isOn == true)
            println("$lamp ランプは点灯されています。")
        else
            println("$lamp ランプは消灯されています。")
    }
}
fun main(args: Array<String>) {
    val l1 = Lamp() // Lamp クラスの l1オブジェクト
    val l2 = Lamp() // Lamp クラスの l2オブジェクト
    l1.turnOn()
    l2.turnOff()
    l1.displayLightStatus("l1)
    l2.displayLightStatus("l2)
}

このプログラムを実行すると、出力は以下の通りです:

l1 ランプは点灯されています。
l2 ランプは消灯されています。

上記のプログラムでは、

  • Lamp クラスが作成されました。

  • このクラスには属性 isOn とメンバーファンクション turnOn()、turnOff()、displayLightStatus() があります。

  • main() 関数で Lamp クラスの 2 つのオブジェクト L1と L2。

  • ここでは、l1オブジェクト l1.turnOn() を呼び出して turnOn() 関数を呼び出します。このメソッドは、l1オブジェクトの isOn インスタンス変数が true に設定されます。

  • 同時に、l2 オブジェクト:l2.turnOff() を呼び出して turnOff() 関数を呼び出します。このメソッドは、l2オブジェクトの isOff インスタンス変数が false に設定されます。

  • 次に、l1と l2オブジェクトが displayLightStatus() 関数を呼び出すと、isOn 属性が true か false かによって適切なメッセージを出力します。

注意、クラス内では、isOn 属性が false に初期化されます。このクラスのオブジェクトを作成すると、そのオブジェクトの isOn 属性も自動的に false に初期化されます。したがって、l2 オブジェクトが turnOff() を呼び出すと、isOn 属性が false に設定されます。

例えば:

class Lamp {
    // 属性(データメンバー)
    private var isOn: Boolean = false
    // メンバーファンクション
    fun turnOn() {
        isOn = true
    }
    // メンバーファンクション
    fun turnOff() {
        isOn = false
    }
    fun displayLightStatus() {
        if (isOn == true)
            println("灯りが点いています。")
        else
            println("灯りが消えました。")
    }
}
fun main(args: Array<String>) {
    val lamp = Lamp()
    lamp.displayLightStatus()
}

このプログラムを実行すると、出力は以下の通りです:

灯りが消えました。

これはKotlinのオブジェクト指向プログラミングの基本的な知識です。