クラス
クラスの作り方はVBなどと同じ。
class クラス名(コントラクタの引数) {
・・・
}
・・・
}
プロパティの宣言
コントラクタの引数にvalまたはvarキーワードを使うとプロパティ定義となる。
・アクセサ:プロパティアクセス用のゲッター・セッターといったメソッド
・バッキングフィールド:実際に値が格納される変数
kotlinではコンストラクタで定義したプロパティに直接アクセスるのではなく、内部的にはゲッター・セッター・バッキングフィールドを使用している。
これらは隠蔽されるため、直接プロパティにアクセスすれば良い。
class Parson(val name: String, var age: Int) { fun isAudit() = age >= 20 }用語:
・アクセサ:プロパティアクセス用のゲッター・セッターといったメソッド
・バッキングフィールド:実際に値が格納される変数
kotlinではコンストラクタで定義したプロパティに直接アクセスるのではなく、内部的にはゲッター・セッター・バッキングフィールドを使用している。
これらは隠蔽されるため、直接プロパティにアクセスすれば良い。
カスタムアクセサ
カスタムアクセサ:ゲッター・セッターの挙動を自分で定義することができる。
valで定義したプロパティにセッター定義できない
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)にインスタンス生成時の処理を記述する。
initブロック(イニシャライザ:initializer)にインスタンス生成時の処理を記述する。
class Customer(val name: String) { init { 初期化処理 } }
セカンダリコンストラクタ
セカンダリコンストラクタ:
プライマリコンストラクタと別のコンストラクタを持つ場合 "constructor" によってコンストラクタを記述する。
セカンダリコンストラクタから thisキーワード でプライマリコンストラクタを呼び出す。
プライマリコンストラクタと別のコンストラクタを持つ場合 "constructor" によってコンストラクタを記述する。
セカンダリコンストラクタから thisキーワード でプライマリコンストラクタを呼び出す。
class Customer(val name: String) { constructor(first: String, last: String) : this("first $last") }
次回記事:Kotlin #12:可視性修飾子
Android Studio, Kotlin学習
0 件のコメント:
コメントを投稿