【学習kotlinシリーズ】プロパティ(カスタムゲッター・カスタムセッター)
Qiitaでことりん学習帳を発売しています!
カスタムゲッター
カスタムゲッターは、クラス内にある他のプロパティの情報を取得するためのプロパティ。カスタムゲッターにしたいプロパティの直後にget()という関数名で定義することで、カスタムゲッターは定義できる。
実際に作ってみる
カスタムゲッターを実際に作ってみる。nameLengthがカスタムゲッター。
class MyGame(){
// プロパティを定義
var name: String = ""
var hp: Int = 0
var mp: Int = 0
// カスタムゲッターを定義
val nameLength: Int
get(): Int {
return this.name.length
}
// メソッドを定義
fun getHP(): Int {
return this.hp
}
fun getMP(): Int {
// this は省略できる
return mp
}
}
fun main(args: Array<String>){
// MyGameインスタンスの作成
val hero: MyGame = MyGame()
// プロパティを設定
hero.name = "John"
hero.hp = 100
hero.mp = 20
// メソッドを実行
print("現在のHP: ")
println(hero.getHP())
print("現在のMP: ")
println(hero.getMP())
print: ("名前の長さ")
// カスタムゲッターで名前の長さを取得
println(hero.nameLength)
}
実行結果
現在のHP: 100
現在のMP: 20
名前の長さ: 4
カスタムセッター
カスタムセッターは、カスタムゲッターとは逆に、プロパティに値を設定する時にカスタムして値をセットすることができる。カスタムセッターの定義は、カスタムセッターを設置するプロパティの後にset()関数を定義することで実装できる。
実際に書いてみる
nameプロパティにカスタムセッターを定義した。
class MyGame(){
// プロパティを定義
// カスタムセッターを定義
var name: String = ""
set(value) {
println("nameに${value}が設定されました。")
// 値は field変数に格納する
field = value
}
var hp: Int = 0
var mp: Int = 0
// カスタムゲッターを定義
val nameLength: Int
get(): Int {
return this.name.length
}
// メソッドを定義
fun getHP(): Int {
return this.hp
}
fun getMP(): Int {
// this は省略できる
return mp
}
}
fun main(args: Array<String>){
// MyGameインスタンスの作成
val hero: MyGame = MyGame()
// プロパティを設定
hero.name = "John"
hero.hp = 100
hero.mp = 20
// メソッドを実行
print("現在のHP: ")
println(hero.getHP())
print("現在のMP: ")
println(hero.getMP())
print("名前の長さ: ")
// カスタムゲッターで名前の長さを取得
println(hero.nameLength)
}
実行結果
名前にJohnが設定されました。
現在のHP: 100
現在のMP: 20
名前の長さ: 4
ディスカッション
コメント一覧
まだ、コメントがありません