
![]() |
|||
|
クラスは一般名詞、インスタンスは固有名詞です。インスタンスはそれぞれ固有の状態を持つオブジェクトのことです。インスタンスの状態の形式とメソッドはクラス内で共通です。 |
|||
![]() |
|||
| このトピックでは次の用語を覚えます: | |||
|
|||
![]() |
|||
|
一般名詞と固有名詞の関係は、変数の型と変数の実体との関係に似ています。一番単純な例を示すことにしましょう。次のソースコードを見てください。 |
|||
|
||||
|
ここで、一般名詞にあたるのが int です。特定の変数のグループの「整数を格納する」という共通の特徴をあらわしています。そして、固有名詞にあたるのが X,Y,Z です。これらは int のバリエーションであり、固有の値を格納しています。 まとめると、int などの型は変数の雛形であり、X,Y,Z などの変数はその雛形を元に作られた、固有の値を持つ実体です。 |
|||
|
オブジェクト指向では、オブジェクトの型のことをクラス、オブジェクトの実体のことをインスタンスと呼びます。そして一般名詞と固有名詞の関係が、クラスとインスタンスにも成り立ちます。次のソースコードを見てください。 |
|||
|
||||
|
class Human ... と宣言されているのがクラス Human です。これが雛形となり、インスタンス Taro, Hanako が生成されています。それぞれのインスタンスは "太郎", 26 "花子", 28 という固有の値を格納しています。 |
|||
|
オブジェクトの状態とメソッドはクラスに属するでしょうか、それともインスタンスに属するでしょうか? 例えば Human クラスのインスタンス Taro には Eat, Walk, Talk などのような機能(=メソッド)があるでしょう。そしてこれらはインスタンス Hanako にも共通です。つまり、メソッドはクラスで共通の機能のことであり、クラスに属します。 オブジェクトの状態(属性とも言います)はどうでしょうか。これは個々のオブジェクトの現在状態を記憶するためのものですから、インスタンス毎に異なるはずです。例えば Taro の名前属性は "太郎" ですし、年齢属性は 26 です。これらは Hanako のものとは異なります。つまり、状態はインスタンスに属します。 では、状態の種類はどうでしょうか? Taro, Hanako ともに同じ形式の状態を保持しています。つまり、状態そのものはインスタンス固有ですが、状態の形式はクラスで共通です。 まとめると、
ということです。 |
|||
(「オブジェクト指向のはなし」は1999年2月から2000年4月にかけて作成されたコンテンツです。)