10-1. Kotlin クラスとメンバの定義
概要
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} 才です。") } }