Kotlinのオブジェクト指向プログラミング(OOP)における**プロパティ(Property)とは、クラスやオブジェクトが持つ状態(データ)**を表すもので、Javaにおけるフィールド(field)やゲッター・セッターの概念を簡潔に表現する仕組みです。Kotlinではプロパティを通じて、より自然で安全な方法でデータの読み書きが行えます。
1. プロパティの構造
Kotlinのプロパティは、以下の要素から構成されます:
-
プロパティ名
-
型
-
getter(取得)
-
setter(設定)
基本的な構文は以下のとおりです。
上記の例では:
-
nameは変更可能なプロパティ(var) -
ageは読み取り専用のプロパティ(val)
2. バッキングフィールドとカスタムアクセス
プロパティには内部的に**バッキングフィールド(backing field)**が使われ、これを通じて値の保存が行われます。カスタムのgetterやsetterを定義することも可能です。
この例では:
-
getter はメールアドレスを大文字で返す
-
setter は空白を除いた文字列を設定する
field はKotlinが自動的に提供するバッキングフィールドのキーワードです。
3. valとvarの違い
valとvarの違い| 修飾子 | 意味 | 書き換え可能か |
|---|---|---|
val |
読み取り専用(immutable) | × |
var |
読み書き可能(mutable) | ○ |
valを使うことで不変性が保証され、副作用を防ぐ設計ができます。
4. デフォルトプロパティの使用例
この例では、model は読み取り専用、speed は変更可能なプロパティです。コンストラクタで初期化され、そのままプロパティとしてアクセスできます。
5. カスタムプロパティの応用(例:計算プロパティ)
このような**計算プロパティ(computed property)**は、値を保持せず、都度計算して返すプロパティです。
6. lateinit と by lazy の活用
lateinit と by lazy の活用-
lateinit:後から初期化するvarプロパティ(非null型に限る) -
by lazy:必要になるまで評価されないvalプロパティ
まとめ
Kotlinのプロパティは、Javaのゲッター・セッターを簡潔に表現しつつ、型安全性と柔軟性を兼ね備えています。OOPにおける「状態のカプセル化」と「データアクセスの制御」を効率的に実現する仕組みです。
生成日:2025/05/04