カスタムゲッター
例えば、以下のようなRectangleクラスがあるとします。
class Rectangle(val width: Int, val height: Int) {
fun area(): Int = this.width * this.height
}
このクラスはarea()というメソッドを持っており、実行すると以下のようになります。
val rectangle = Rectangle(2,3) // 6が表示される println(rectangle.area())
このarea()を、メソッドではなくフィールドとして定義することができます。
class Rectangle(val width: Int, val height: Int) {
val area: Int
get() = this.width * this.height
}
実行するときは、area()というメソッドを呼ぶのではなく、areaを参照します。
val rectangle = Rectangle(2,3) // 6が表示される println(rectangle.area)
このような仕組みが、カスタムゲッターです。
カスタムセッター
カスタムセッターは、フィールドのセッターを変更できる仕組みです。
例えば以下のクラスがあるとします。nameフィールドの値を外部から変えると、値を変更するだけでなく、文章を出力します。
class Person() {
var name: String = ""
set (value) {
field = value
println("こんにちは、${value}さん!")
}
}
これを実行すると以下のようになります。
val person = Person() // 「こんにちは、山本さん!」と出力される person.name = "山本"
参考
自分の理解のために記事にしてみましたが、既存の記事も分かりやすいです。特に以下は分かりやすかったです。