IT・プログラミング雑学

インスタンスとオブジェクトの違いとは?クラスとの関係は?違いや注意点もプログラマーがわかりやすく解説

よぉ、桜木建二だ。オブジェクト指向プログラミングでインスタンスとオブジェクトって言葉が出てくるよな。同じという話もあれば、違うという話もある。実際、オブジェクトとインスタンスは何が違うのか、オブジェクト指向プログラミングでよく出てくるクラスとはどういう関係なのかをプログラマでもあるライターのwoinaryと一緒に解説していくぞ。

解説/桜木建二

「ドラゴン桜」主人公の桜木建二。物語内では落ちこぼれ高校・龍山高校を進学校に立て直した手腕を持つ。学生から社会人まで幅広く、学びのナビゲート役を務める。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさんです。

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

image by iStockphoto

「インスタンス」と「オブジェクト」は、どちらもオブジェクト指向プログラミング(略してOOP)で出てくる言葉で、「クラス」と一緒に使われることが多いです。ざっくり言えば「クラス」を元に実体化したものを「インスタンス」や「オブジェクト」と呼びます。では「インスタンス」とも「オブジェクト」とも呼ぶのであれば、これらは同じものなのでしょうか?

実はそうではありません。それを見ていきましょう。

インスタンス:クラスを実体化したもの

「インスタンス(Instance)」を英和辞書で引くと「実例、事例」という訳語が出てきます。インスタンスとはクラスを実体化したものです。プログラミングする際に、まとめて考えた方が良いものを集めたものがクラスになります。例えば学生のデータをまとめたものを学生クラス、成績をまとめたものが成績クラスです。

これらのクラスの中には実際にデータが入っているわけではありません。設計図や型紙のようなものだとイメージしてください。設計図や型紙をもとに実際にデータを入れるものを作ることを「インスタンス化」と呼び、作ったものがインスタンスとなります。プラモデルに例えると、パーツ表や組み立て方を書いた紙がクラス、実際に組み立てたものがインスタンスと考えてください。

オブジェクト:すべての総称

OOPの考え方ではすべてのものが「オブジェクト」である、としています。データを入れる変数も、その変数を使って何かの処理をする関数も、それらを集めたクラスも、すべてオブジェクトである、という考え方です。

OOP以前のプログラミング言語では変数は変数、関数は関数と違うものと考えていました。それをOOPではすべてオブジェクトと考えるのです。そのオブジェクト同士が連携してプログラムが動作するというのがOOPの考え方になります。

no-img2″>
 <figcaption class=桜木建二

「インスタンス」と「オブジェクト」はオブジェクト指向に関係する言葉で、「クラス」とも関連が深いということがわかったな。クラスという型紙から作った服がインスタンスだ。このインスタンスのことをオブジェクトと呼ぶこともあるが、オブジェクトは他のあらゆるものを指す総称だということを覚えておけ。

オブジェクト指向はすべてオブジェクトという考え方

image by iStockphoto

オブジェクト指向プログラミング(OOP)とは何でしょうか。ざっくりと言うと、プログラムで使う変数も関数も、その他のものもすべて「オブジェクト」である、という考え方です。では「オブジェクト」とは何なのでしょうか。そのまま直訳すると「もの」となります。

例えば、人間も犬も猫も猿もみな動物です。それと同じようにプログラムの中にある変数や関数、あるいはクラスといったものも違うように見えてすべて同じ「もの」であるという考え方になります。何だか曖昧でよくわかりませんよね。もう少し詳しく見ていきます。

\次のページで「プログラムはすべてオブジェクト?」を解説!/

次のページを読む
1 2 3
Share: