infoMore than 1 year has passed since last update.
getter, setter は内部で作動しているぞ!【Kotlin】
Last updated at Posted at 2023-04-09
まずはこのコードを見てください
val song = Song()
song.name = "仰げば尊し"
pirntln(song.name)
-
Song
クラスのインスタンスを生成
-
name
フィールドに値を代入
-
name
フィールドを取得し表示
- 直接的にフィールドを代入&取得しているように見えますよね?
- 実際は setter, getter が呼び出されています
getter, setter は自動的に作成されます
- クラスにフィールドを定義すると getterと setter が内部に生成されます
- フィールドと getter, setter の組み合わせをプロパティと呼びます
class Song {
// nameというプロパティを定義
var name: String = ""
}
val song = Song()
// 内部のsetter経由で値を格納
song.name = "仰げば尊し"
// 内部のgetter経由で値を取得
pirntln(song.name)
プロパティを「書き換え不可」にしたいときは
-
var
を val
にすることで getter のみが生成されるようになります
class Song(id: int) {
val id
var name: String = ""
val song = Song(1)
song.id = 2 // コンパイルエラー発生
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
What you can do with signing up