※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

10-1. Kotlin クラスとメンバの定義

2023年9月20日

概要

Kotlin では、クラスを使ってオブジェクトの設計図を定義します。
クラスは、オブジェクトが持つデータ (プロパティ) と操作 (メソッド) を定義します。これらのプロパティやメソッドは、クラスのメンバと呼ばれます。

書式

クラス (class) を定義するにはキーワード class を使います。クラス名は慣習的に先頭大文字で記述します

class クラス名 {
    クラスの定義ブロック(プロパティとメソッドの定義)
}

プロパティ、プロパティ変数

クラスは、定義ブロック内に変数を定義することができます。
クラス内にある変数を プロパティ、あるいはプロパティ変数、フィールド変数 と呼びます。オブジェクトの特性や性質を表すデータをプロパティとして保持する形です。

プロパティは var または、val で定義できます。

以下は、Person クラスを定義し、プロパティとして name , age を定義した例です。

class Person {
    var name: String = ""  // 名前
    var age: Int = 0  // 年齢
}

メソッド、メンバ関数

クラスは、定義ブロック内に関数も定義することができます。クラス内にある関数をメソッド、あるいはメンバ関数と呼びます。

例) 上記の Person クラスにさらにメソッドとして greeting を定義した例。

class Person {
    var name : String = ""
    var age : Int = 0
    fun greeting(){
        println("Hello World! 私は ${name} です。年齢は ${age} です。")
    }
}

実行例

Person クラスを定義し、main 関数から Person 型のオブジェクト myPersonObj を生成し (クラスを実体化する、クラスをインスタンス化する)、name, age のプロパティをセットしてから、メソッド: greeting() を実行しています。

fun main(){
    val myPersonObj : Person = Person()
    myPersonObj.name = "HogeHoge"
    myPersonObj.age = 3
    myPersonObj.greeting()
}

class Person {
    var name : String = ""
    var age : Int = 0
    fun greeting(){
        println("Hello World!\r\n私は ${name} です。年齢は ${age} 才です。")
    }
}

出力例

Hello World!
私は HogeHoge です。年齢は 3 才です。

メンバへのアクセスと this

クラスに含まれるプロパティやメソッドのことを、クラスのメンバ (member) と呼びます。
クラスのメンバ (プロパティやメソッド) にアクセスするには、ドット演算子 (.) を使用します。

クラス名.メンバ名


もう少し抽象的には

目的のオブジェクトへの参照.メンバ名

です。

同一クラス内のメンバにアクセスする際には、this 式で自分自身を目的としたオブジェクトを取得できます。
すなわち、同一クラス内のメンバにアクセスする際は

this.メンバ名

で可能です。this 自体を省略することも可能です。(前の節までは this も省略していました。)

例)
this を省略せずに明記した場合です。

fun main(){
    val myPersonObj : Person = Person()
    myPersonObj.name = "HogeHoge"
    myPersonObj.age = 3
    myPersonObj.greeting()
}

class Person {
    var name : String = ""
    var age : Int = 0
    fun greeting(){
        println("Hello World!\r\n私は ${this.name} です。年齢は ${this.age} 才です。")
    }
}