Kotlin では、プロパティ(変数)の宣言時に、getter と setter が自動的に生成されることを知った
これは、Kotlin のプロパティが Java のフィールドに直接アクセスするのではなく、背後でメソッドを使ってアクセスする仕組みになっているらしい
この自動生成される getter と setter によって、プロパティの値を取得したり、変更したりする際に追加のコードを書く必要がなくなる
変数の定義方法に val(読み取り専用) と var(読み書き可能) があるが、val にはgetter だけが生成され、setter は生成されないから代入が不可となっていると理解した
varは以下のようにして記述するが、
var age: Int = 25
直接フィールドを操作しているのではなく、クラスの getter と setter で値を操作している
fun getAge(): Int { return field } fun setAge(value: Int) { field = value }
カスタム getter と setter
自動生成された getter や setter ではなく、自分でカスタムのロジックを定義することも可能
例: カスタム getter
val name: String = "Kotlin" get() = field.uppercase() // 値を大文字にして返す
この name プロパティにアクセスする際、内部の field を uppercase() で大文字に変換して返す
println(name) // 出力: KOTLIN
例: カスタム setter
var age: Int = 25 set(value) { field = if (value >= 0) value else 0 // 0以上の値のみを許可 }
このカスタム setter では、age プロパティに負の値を設定しようとした場合、自動的に 0 に置き換える
age = -5 println(age) // 出力: 0