オブジェクトとインスタンスの違い

オブジェクト指向に関する解説ではオブジェクトの他にインスタンスという言葉も使用されます。この 2 つはほとんど同じ意味で使用されるので、どちらを使っても基本的に問題はありませんが、厳密には少し意味は異なります。ここでは、オブジェクト指向におけるオブジェクトとインスタンスの違いについて解説します。

インスタンスとは

Java のオブジェクト指向において、「オブジェクト」と「インスタンス」はほぼ同じものを指します。どちらの言葉を使っても間違いではありません。ただし厳密にいうと、オブジェクトは「モノ」を表す一般的な言葉であり、インスタンスはクラスから生成された個別の実体を指します。(instance は「実例」や「具体例」という意味の英語です)。

例えばオブジェクトについては、「オブジェクト指向ではクラスからオブジェクトを作成する」「このメソッドは戻り値としてオブジェクトを返す」などのように、概念的な意味で使われることが多いです。一方でインスタンスは、「Car クラスから myCar というインスタンスを生成した」のように、実際にメモリ上に存在する特定のオブジェクトを指す場合に使われることが多い言葉です。

また、どのクラスから作られたオブジェクトなのかを意識するときにも、インスタンスという言葉が使われることがよくあります。

ただ実際のところは、オブジェクトとインスタンスは同じ意味で使われることも多いため、最初は同じものとして理解しておいても問題ありません。

インスタンスが作られるタイミング

Java のコードでは new を使った瞬間に「クラス(設計図)」から「インスタンス(実体)」がメモリ上に作られます。このように、クラスからインスタンスを作成することを「インスタンスを生成する」といいます。

オブジェクトとインスタンスの違い(1)

一つのクラスから、複数のインスタンスを生成することができます。

-- --

オブジェクト指向におけるオブジェクトとインスタンスの違いについて解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。