インスタンスメソッドを定義する
クラスは何かを行うための設計図です。そこで具体的に何をさせたいのかをクラスの中に記述していく必要があります。その処理を記述するのがメソッドとなります。メソッドはいくつか種類がありますが、クラスから生成したインスタンスからしか呼び出せないメソッドをインスタンスメソッドと呼びます。ここでは Ruby でインスタンスメソッドを定義する方法について解説します。
(Last modified: )
インスタンスメソッドを定義する
メソッドは「メソッド」で解説したとおり実行する一連の処理をまとめたものです。ただし通常のメソッドがプログラム中からいつでも呼び出せるのに対してクラス内に記述されたメソッドはクラスから生成されたインスタンスからしか呼び出すことが出来ません。このようなメソッドをインスタンスメソッドと呼びます。
インスタンスメソッドは次のように定義します。
class クラス名
def メソッド名(引数1, 引数2, ...)
処理
end
end
def
から始まりメソッド名を記述します。そのあとの (
から )
の間に引数を記述します。そして最後に end
を記述してインスタンスメソッドの定義は終了です。
例えばクラス名について表示するだけの簡単なインスタンスメソッドは次のようになります。
class Car def dispString(str) puts(str) end end
なお、引数が無いメソッドの場合は括弧を省略しても構いません。
class Car def dispMsg puts("Hello") end end
インスタンスメソッドを呼び出す
定義されたインスタンスメソッドはクラスのインスタンスから呼び出すことができます。
class Car def dispClassname puts("Car class") end def dispString(str) puts(str) end end car = Car.new() car.dispClassname car.dispString("crown")
インスタンスからメソッドを呼び出すにはインスタンスの後にドット「.」を付けてメソッドを名を記述します。引数がある場合は括弧の後に引数をカンマで列挙して記述して下さい。引数が無い場合はメソッド名だけで結構です。
インスタンス名.メソッド名(引数1, 引数2, ...) インスタンス名.メソッド名
またドット「.」の代わりにコロン(:)を2つ続けて次のように記述することもできます。
インスタンス名::メソッド名(引数1, 引数2, ...) インスタンス名::メソッド名
どちらの形式も違いはありませんので、どちらかに統一して利用すればいいと思います。
インスタンスを作成するに使用した new
メソッドはクラスに対して呼び出しました。例えば Car.new()
のようにです。このようなメソッドはクラスに対して実行するクラスメソッドと呼ばされます。それに対して今回のようにクラス内に定義したインスタンスメソッドはクラスから作成したインスタンスから呼び出す点が異なっていることに注意して下さい。
では実際に試してみます。
# encoding: UTF-8 class Car def dispClassname puts("Car class") end def dispString(str) puts(str) end end car = Car.new() car.dispClassname car.dispString("crown") car::dispString("civic")
上記を実行すると次のように表示されます。
今回は2つのインスタンスメソッドを定義し、クラスから作成したインスタンスからメソッドを呼び出しました。
-- --
Ruby でインスタンスメソッドを定義する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。