0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Kotlin入門:オブジェクト宣言

Last updated at Posted at 2020-02-26

オブジェクト宣言

アプリの設定情報のように、
一つしかインスタンスを持たないクラスを用意したいことがあります。
このような場合に使用する仕組みをオブジェクト宣言と言います。

オブジェクト宣言の一般的な構文は以下の通りです。

object name{ body }

name:オブジェクト名
body:オブジェクトの本体

以下は入力例です。

object MyApp{
    var name = "Kotlin"
    var author = "Kotlin Project"
    fun show(){
        println("${name}:${author}")
    }
}
fun main(){
    MyApp.show()
}

クラスではなくインスタンスそのものの宣言なので、
コンストラクターは持てません。

オブジェクト式

Androidのアプリ開発では、イベントリスナーの宣言など、
その場限りのクラスを定義したいということがよくあります。

オブジェクト式の一般的な構文は以下の通りです。

object: parent{ body }

parent:基底クラスまたはインターフェース
body:クラス本体

入力例:

MainActivity.kt
btn.setOnClickListener(object: View.OnClickListener{
  overtire fun onClick(view:View){
    Log.v("Kotlin","Clicked!")
  }
})

コンパニオンオブジェクト

クラス内部でのオブジェクト宣言のことです。
以下はインスタンス生成するためのマーケットメソッド(任意のメソッド名で可)を、
コンパニオンオブジェクトで定義する例です。

class Person private constructor(var name:String){
    companion object Market{
        fun getInstance():Person{
            return Person("山田")
        }
    }
    override fun toString():String{
        return "Person:${this.name}"
    }
}
fun main(){
     val person = Person.getInstance()
     println(person)
}

実行結果は以下の通りです。

Person:山田

ここでPersonクラスをprivate宣言しているので、
クラス外部からはインスタンス化できません。
コンパニオンオブジェクトにはcompanionキーワードを付与するだけです。
コンパニオンオブジェクト配下のメンバーは「クラス名.メンバー名」で呼び出せます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?