クラスとオブジェクトとインスタンス
考えてみる。
まず、それぞれを日本語に直訳すると
- クラス: 種類、分類
- オブジェクト: 物、物体
- インスタンス: 事実、事例
オブジェクト指向とはオブジェクト同士でメッセージのやりとりをするモデルのこと。そのモデルを実現する為の言語がオブジェクト指向言語。
- クラスとは、同じ性質を持ったオブジェクトを分類してまとめたもの。
- その分類された性質をクラスとして定義する。
- インスタンスとはそのクラスを実体化したもの(クラスの事例)。
- 基本的にオブジェクト == インスタンスと思っていい。
だから(接続詞がおかしいな。。)
もっと実装よりの考えかたをすると、
- オブジェクトは属性と操作を持つ。
- クラスはオブジェクトが持つ属性と操作を定義する。
- インスタンスはクラスへの参照と属性を持ち、自分自身を引数にクラスのメソッドを呼び出す。
やっぱし、クラスとインスタンスという概念は
クラスを使ってオブジェクト指向を表現する為のもの
と考えるのがいいのかな。
うまくまとまらない。。。
追記
あー、分類(クラス)を意識しないでそれ単体の「もの」として見るときはオブジェクトと呼んで、「何それに属する」という言い方をする場合はインスタンスと呼んでるかな。
どこかに書いてあった気もするけど。