Scalaのオブジェクト指向プログラミングにおける「オブジェクト(object)」とは、クラスのインスタンスを生成せずに**1つだけ存在する実体(シングルトン)**を定義するための構文です。objectキーワードを使って定義し、主に以下の用途で使用されます。
1. オブジェクトの基本構文
このようにobjectで定義されたMyObjectは、クラスとは異なりnewせずに直接使用できます。
2. シングルトンオブジェクト
Scalaのobjectはシングルトンパターンを言語レベルでサポートしています。Javaでシングルトンを実装するには工夫が必要ですが、Scalaではobjectを使うだけで自然にシングルトンになります。
3. クラスとの連携:コンパニオンオブジェクト
Scalaでは、同じ名前のクラスとオブジェクトを同じファイル内で定義することができます。これをコンパニオンクラスとコンパニオンオブジェクトと呼びます。オブジェクト内に定義されたメンバには、クラスの中からアクセスできます(逆も同様)。
このようにすることで、以下のように簡潔にインスタンスを生成できます。
4. アプリケーションエントリポイントとしての使用
Scalaのアプリケーションは、オブジェクトにmainメソッドを定義することでエントリポイントを指定できます。
このように、Javaのpublic static void mainに相当します。
5. オブジェクトの特徴まとめ
| 特徴 | 説明 |
|---|---|
| インスタンス化不要 | newせずに直接使用できる |
| シングルトン | プログラム中にただ一つしか存在しない |
| staticの代替 | Javaのstaticメンバーのように扱える |
| コンパニオンとの連携 | 同名のクラスと連携し、ファクトリーメソッドなどを提供 |
| アプリケーションエントリ | mainメソッドを定義してアプリの起点にできる |
Scalaのobjectは、Javaにおけるstaticの代替手段だけでなく、より安全で柔軟なオブジェクト指向設計を可能にする重要な構文です。
生成日:2025/05/04