インスタンスメソッド
クラスは何かを行うための設計図です。そこで具体的に何をさせたいのかをクラスの中に記述していく必要があります。その処理を記述するのがメソッドとなります。
メソッドは『メソッド』で見たとおり実行する一連の処理をまとめたものです。ただし通常のメソッドがプログラム中からいつでも呼び出せるのに対してクラス内に記述されたメソッドはクラスから作成されたオブジェクトしか呼び出すことが出来ません。このようなメソッドをインスタンスメソッドと呼びます。
class クラス名
def メソッド名(引数1, 引数2, ...)
処理
end
end
例えばクラス名について表示するだけの簡単なインスタンスメソッドは次のようになります。
class Car def dispString(str) print(str, "¥n") end end
なお、引数が無いメソッドの場合は括弧を省略しても構いません。
class Car def dispClassname print("Car class¥n") end def dispString(str, "¥n") print(str) end end
インスタンスメソッドの呼び出し
定義されたインスタンスメソッドはクラスのオブジェクトから呼び出すことができます。
class Car def dispClassname print("Car class¥n") end def dispString(str, "¥n") print(str) end end car = Car.new car.dispClassname car.dispString("crown")
オブジェクトからメソッドを呼び出すにはオブジェクトの後にドット「.」を付けてメソッドを名を記述します。引数がある場合は括弧の後に引数をカンマで列挙して記述して下さい。引数が無い場合はメソッド名だけで結構です。
オブジェクト名.メソッド名(引数1, 引数2, ...) オブジェクト名.メソッド名
またドット「.」の代わりにコロン(:)を2つ続けて次のように記述することも出来ます。
オブジェクト名::メソッド名(引数1, 引数2, ...) オブジェクト名::メソッド名
どちらの形式も違いはありませんので、どちらかに統一して利用すればいいと思います。
オブジェクトを作成する為に使用した「new」メソッドはクラスに対して実行しました。例えば「Car.new()」のようにです。このようなメソッドはクラスに対して実行するクラスメソッドと呼ばされます。今回のようにクラス内に定義したインスタンスメソッドはクラスから作成したオブジェクトに対して実行する点が異なっていることに注意して下さい。
サンプルプログラム
では実際に試してみます。
class Car def dispClassname print("Car class¥n") end def dispString(str) print(str, "¥n") end end car = Car.new() car.dispClassname car.dispString("crown")
上記を実行すると次のように表示されます。
今回は2つのインスタンスメソッドを定義し、クラスから作成したオブジェクトに対してメソッドを実行してみました。
( Written by Tatsuo Ikura )