カスタムゲッター
例えば、以下のような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 = "山本"
参考
自分の理解のために記事にしてみましたが、既存の記事も分かりやすいです。特に以下は分かりやすかったです。