オブジェクト

Kotlinにおける「オブジェクト(object)」は、オブジェクト指向プログラミング(OOP)の中核となる概念の一つであり、状態(プロパティ)と振る舞い(メソッド)を一つにまとめた実体です。Kotlinでは「objectキーワード」を使って、さまざまな種類のオブジェクトを定義できます。以下に詳しく説明します。


1. 基本的な「オブジェクト」とは

オブジェクトとは、クラスから生成されたインスタンスのことを指します。例えば、Carクラスから生成されたmyCarが「オブジェクト」です。

kotlin
class Car(val brand: String) { fun drive() { println("$brand is driving") } } val myCar = Car("Toyota") myCar.drive()

この例では、myCarCarクラスのオブジェクトです。


2. objectキーワードの使い方

Kotlinでは特別に、objectキーワードを使って単一のインスタンス(シングルトン)を直接定義できます。

2.1. オブジェクト宣言(シングルトン)

kotlin
object Logger { fun log(message: String) { println("Log: $message") } } Logger.log("Application started")
  • Loggerは1つしか存在しないシングルトンオブジェクトです。

  • Javaでのstaticに近い役割を果たします。


2.2. 匿名オブジェクト(Anonymous Object)

  • 一時的なオブジェクトを作成する場合に使います。

kotlin
val obj = object { val name = "Temporary" fun greet() = println("Hello, $name") } obj.greet()
  • 型を持たないオブジェクトをその場で定義できます。


2.3. オブジェクト式(Object Expression)

  • 匿名クラスのインスタンスを生成して即時に使用する方法です。

kotlin
interface Clickable { fun onClick() } val clickable = object : Clickable { override fun onClick() { println("Clicked") } } clickable.onClick()
  • Javaの無名クラス(anonymous class)に相当します。


3. companion object(コンパニオンオブジェクト)

  • Kotlinではstaticメンバは存在しませんが、クラス内に1つだけ定義できるオブジェクトとしてcompanion objectがあります。

kotlin
class MathUtils { companion object { fun add(a: Int, b: Int): Int = a + b } } val result = MathUtils.add(3, 5)
  • MathUtils.add(3, 5)のようにクラス名を通じてアクセスできます。

  • Java側からもstaticとして呼び出し可能です。


まとめ

用途 説明
通常のオブジェクト クラスのインスタンスとして生成される
object宣言 シングルトンオブジェクトを作成
匿名オブジェクト 型なしで一時的に使いたい場合
object インターフェースを即時実装
companion object クラスに紐づいた静的メンバを定義

Kotlinではオブジェクトの取り扱いが柔軟かつ明確であり、Javaに比べてより簡潔にシングルトンや匿名オブジェクトを扱うことができます。

生成日:2025/05/04