■ Kotlin #11:クラス

Kotlinのクラス
前回記事:Kotlin #10:例外処理


クラス

クラスの作り方はVBなどと同じ。
class クラス名(コントラクタの引数) {
・・・
}

プロパティの宣言

コントラクタの引数にvalまたはvarキーワードを使うとプロパティ定義となる。
class Parson(val name: String, var age: Int) {
  fun isAudit() = age >= 20
}
  
用語:
・アクセサ:プロパティアクセス用のゲッター・セッターといったメソッド
・バッキングフィールド:実際に値が格納される変数

kotlinではコンストラクタで定義したプロパティに直接アクセスるのではなく、内部的にはゲッター・セッター・バッキングフィールドを使用している。
これらは隠蔽されるため、直接プロパティにアクセスすれば良い。

カスタムアクセサ

カスタムアクセサ:ゲッター・セッターの挙動を自分で定義することができる。
class person(val name: String) {
  val initial: Char
    get() {
      return name.first()
    }
  var mailAddress: String = ""
    set(account: String) {
      field = account + "@test.com"
    }
}
  
上記の "field" はバッキングフィールドを表す変数
valで定義したプロパティにセッター定義できない

プライマリコンストラクタ

プライマリコンストラクタ:"class クラス名(引数:型)" といったクラスヘッダで定義したコンストラクタのこと
initブロック(イニシャライザ:initializer)にインスタンス生成時の処理を記述する。
class Customer(val name: String) {
  init {
    初期化処理
  }
}
  

セカンダリコンストラクタ

セカンダリコンストラクタ:
プライマリコンストラクタと別のコンストラクタを持つ場合 "constructor" によってコンストラクタを記述する。
セカンダリコンストラクタから thisキーワード でプライマリコンストラクタを呼び出す。
class Customer(val name: String) {
  constructor(first: String, last: String)
    : this("first $last")
}
  





次回記事:Kotlin #12:可視性修飾子


Android Studio, Kotlin学習

0 件のコメント:

その他の記事