English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
この記事では、Kotlin で getter と setter の使用方法を学ぶために例を用意しています。
getter と setter を学ぶ前に、以下のことを理解しておくと良いでしょうKotlin クラスとオブジェクト。
プログラミングでは、getter は属性の値を取得するために使用されます。同様に、setter は属性の値を設定するために使用されます。
Kotlin では、getter と setter は任意です。プログラムにそれらが作成されていない場合、自動的に生成されます。
以下の Kotlin コード
class Person { var name: String = "defaultValue" }
同等
class Person { var name: String = "defaultValue" // getter get() = field // setter set(value) { field = value } }
Person クラスのオブジェクトをインスタンス化し、name 属性を初期化する際、setter パラメータの値が渡され、field が value に設定されます。
val p = Person() p.name = "jack"
現在、name 属性にアクセスする場合、コードの get()=field のため、field を取得します。
println("${p.name}")
これは実際の動作例です:
fun main(args: Array<String>) { val p = Person() p.name = "jack" println("${p.name}") } class Person { var name: String = "defaultValue" get() = field set(value) { field = value } }
このプログラムを実行すると、出力は以下のようになります:
jack
デフォルトでは、これが getter と setter の動作の方法です。しかし、getter と setter を使用して属性の値を変更することができます(値の変更)。
fun main(args: Array<String>) { val maria = Girl() maria.actualAge = 15 maria.age = 15 println("マリア: 実際の年齢 = ${maria.actualAge}") println("マリア: 仮想年齢 = ${maria.age}") val angela = Girl() angela.actualAge = 35 angela.age = 35 println("アンジェロ: 実際の年齢 = ${angela.actualAge}") println("アンジェロ: 仮想年齢 = ${angela.age}") } class Girl { var age: Int = 0 get() = field set(value) { field = if (value < 18) 18 else if (value >= 18 && value <= 30) value else value-3 } var actualAge: Int = 0 }
このプログラムを実行すると、出力は以下のようになります:
マリア: 実際の年齢 = 15 マリア: 仮想年齢 = 18 安戈洛: 実際の年齢 = 35 安戈洛: 仮想年齢 = 32
ここでは、ActialAge属性が期待通りに動作しています。
しかし、プログラムのsetterを設定することで、age属性の値を変更する他のロジックがあります。