title=オブジェクト


=== オブジェクトとは

Ruby で扱える全ての値はオブジェクトです。
Ruby のオブジェクトに対して可能な操作はメソッド呼び出しのみです。
あるオブジェクトが反応できるメソッドは、
そのオブジェクトが所属するクラスによって一意に決定します。
所属するクラスはオブジェクト生成時に決まり、その後は特異クラスの導入以外、所属クラスが変わることはありません。
またオブジェクトは、特定のクラスに対比して、その「インスタンス」とも呼ばれます。

オブジェクトの生成は、一般には、別のオブジェクトのメソッドを呼び出すことによって行われます。

=== クラス

クラスは自身に所属するオブジェクトが反応できるメソッドを決定します。
所属するオブジェクトに対してあるメソッドを呼び出すことができるなら、
そのメソッドが「クラスに定義されている」と言います。
またメソッドはクラスとメソッド名によって一意に決定します。

クラスは必ずただひとつの「スーパークラス」を持ち、
スーパークラスであるメソッドが定義されていれば自クラスでもそのメソッドが同じ内容で定義されていることになります。
これを「継承」と呼びます。
継承は推移するので、スーパークラスのスーパークラスが持つメソッドもまた自クラスにおいて定義されていることになります。

==== モジュール

include

ちょっと特殊でクラスではない。しかし機能は同じ。

=== メソッド

メソッドは実行することができます。その実行を開始することを通常「呼び出す」と言います。
また呼び出すときにはオブジェクトを渡すことができ、
そのオブジェクトを「引数」と呼びます。いくつの引数を受け取ることができるかはメソッドの定義時に決定し、
変更することはできません。
