オブジェクトとインスタンスって何が違うの?という初心者プログラマー向けの図解
2019.06.10
PHPやJavaのプログラミング言語を勉強していると、「オブジェクト」と「インスタンス」という言葉が頻繁に飛び交います。
僕も、最初の頃はオブジェクトとインスタンスの違いがわからず、苦戦していました。
そこで、22年間スポーツしかやってこなかったパソコンチンパンジーの僕でもわかる、「オブジェクトとインスタンスの違い」について、図解で解説していきます。
これでわからなければ、諦めましょう。
オブジェクトはあらゆるものの総称
オブジェクトとインスタンスの違いを説明する前に、オブジェクトの概念について説明していきます。
オブジェクトは全ての総称であり、とても曖昧な概念です。
実世界でいえば、人間、動物、食べ物、自然、本、携帯、服、ありとあらゆるものがオブジェクトに含まれます。
オブジェクトについては、深く理解しようとするよりも、なんとなく「全ての総称なんだな」と認識してください。
オブジェクトとインスタンスの関係
オブジェクトが全ての総称であるならば、インスタンスもオブジェクトの1つということになります。
本やネット上で、オブジェクトとインスタンスが同じ意味のように使用されるのはこのためです。
インスタンスについて正しい定義をすると、クラスから生成されたオブジェクトをインスタンスとなります。
「クラスって何?」という方のために、クラスとインスタンスの関係についても説明しておきます。
クラスとインスタンスの関係
クラスとインスタンスをわかりやすい例えると、次のようになります。
- クラス:車の設計書
- インスタンス:車
設計書(クラス)から、車(インスタンス)が作られるイメージです。
そして、設計書から車が作られる工程を「インスタンス化」と言います。
改めてインスタンスの定義を確認すると、「クラス(車の設計書)から生成(インスタンス化)されたオブジェクトをインスタンス(車)」ということです。
オブジェクトとインスタンスとクラスの関係
オブジェクト、インスタンス、クラスの関係をまとめると、次のようになります。
- オブジェクト:全ての総称(インスタンスもクラスもオブジェクトの1つ)
- クラス:設計書
- インスタンス:クラスからインスタンス化されて生成されたオブジェクト
インスタンスもクラスも、オブジェクトの1つだということです。
初心者向けに、分かりやすくシンプルにまとめたので、これでオブジェクトとインスタンスの違いについて分からなければ諦めましょう。