こんにちは😀
今回は、プロパティをみていきます。
Kotlinのプロパティとは
クラスのオブジェクトが共通の名前、データ型をもつ変数をどう呼ぶかは言語によって様々だそうです。
その呼び名は、「メンバ変数」「フィールド」「プロパティ」と呼び、意味や機能も違うとのことです。
ただ、Kotlinでクラスのオブジェクトに持たせる変数は、全て「プロパティ」と呼びます。
Kotlinでは、値と「field」、値を返す関数は「get」、値を変更する関数は「set」と呼びます。
値の入出力を関数を通じて行うのがプロパティになります。
陰で呼ばれる関数「get」「set」
実際に書いてみましょう。
以下の処理は、関数「get」「set」を省略しています。
Kotlinでは、通常この関数を記述しなくても自動で呼ばれるようになっています。
class Driving{
var car:String=”ベンツ”
}
main関数で呼んでみましょう。
5行目で、見えませんが「get」が呼ばれています。
また、7行目で、これも見えませんが、「set」が呼ばれています。
fun main(args: Array<String>) {
val car = Driving()
println(“乗ってみたい車は、${car.car}だ”)
car.car = “フェラーリ”
println(“次に乗ってみたい車は、${car.car}だ”)
}
実行すると、以下のように途中で値が変更されて出力されています。
関数「get」「set」を書き換える
通常以外の方法でプロパティを扱いたい時には、「get」「set」の関数の中身を書き換えることができます。
以下の処理では、「get」は書き出しただけで通常の省略した形となんら変わりはありませんが、「set」のようにログを出したい場合は以下のように「println」を追加し、通常の処理を変更することができます。
class Driving(){
var car:String=”ベンツ”
get():String{
return field
}
set(car){
println(“変更します。”)
field = car
}
}
main関数を書いてみましょう。
fun main(args: Array<String>) {
val car = Driving()
println(“乗ってみたい車は、${car.car}だ”)
car.car = “フェラーリ”
println(“やっぱり乗ってみたい車は、${car.car}だ”)
}
実行すると、「set」関数のログが出力されています。
最後に一言・・・
Kotlinのプロパティは、通常の使い方であれば「get」「set」の処理を省略できるのが特徴だと感じました。
これを省くだけで、コードミスやコードの冗長化をだいぶ防げます。
今回はここまで🤚
では、また次回。