Kotlin

バッキングフィールドとカスタムゲッター - Kotlin入門

ここでは、Kotlin でクラスに実装するプロパティについてまとめています。
バッキングフィールド(backing field)とカスタムゲッター(custom getter)という仕組みがあります。

 

プロパティとバッキングフィールド(backing field)

Kotlin でプロパティをクラスに定義する場合、以下のように記述できます。

この Person クラスでは、nameage というプロパティを公開しています。
プロパティの値はそれぞれ、_text_number というメンバー変数に格納されています。
※修飾子 private を付けることで、_text, _number は外部から直接アクセスできなくなります。

 

このように、あるプロパティの値を保持するオブジェクト(今回はメンバー変数)のことを、
バッキングフィールド(backing field)といいます。

 

プロパティ名と型宣言に続く get()set(value) で、バッキングフィールドの値を参照したり、値を代入したりすることができます。

プロパティの参照・代入で自由度の高い処理を実装できる get()set(value) のことを、
カスタムゲッター(custom getter)、カスタムセッター(custom setter)と呼びます。

この Person クラスは、以下のようにプロパティを変更、参照できます。

 

自動生成されるバッキングフィールド(backing field)

Kotlin では、バッキングフィールドを明示的に記述しなくても、必要に応じて自動生成されます。
上記の Person クラスのコードは、Kotlin では以下のようにも記述できます。

自動的に生成されるバッキングフィールドへは、キーワード field を使ってアクセスします。
また、プロパティの初期値を設定する必要があります。

 

プロパティとカスタムゲッター(custom getter)

Kotlin では、バッキングフィールドが自動で生成されますが、バッキングフィールドを持たないプロパティを定義することも可能です。

プロパティ nameLengthval で定義されており、バッキングフィールドを持ちません。
代わりに、カスタムゲッター(custom getter)だけを持ちます。

参考

varval の違いについては、「変数の定義valとvar」にまとめています。

 

カスタムゲッターは、以下のように省略して記述することも可能です。

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Kotlin
-,