インスタンスメソッド

広告

クラスは何かを行うための設計図です。そこで具体的に何をさせたいのかをクラスの中に記述していく必要があります。その処理を記述するのがメソッドとなります。

メソッドは『メソッド』で見たとおり実行する一連の処理をまとめたものです。ただし通常のメソッドがプログラム中からいつでも呼び出せるのに対してクラス内に記述されたメソッドはクラスから作成されたオブジェクトしか呼び出すことが出来ません。このようなメソッドをインスタンスメソッドと呼びます。

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()」のようにです。このようなメソッドはクラスに対して実行するクラスメソッドと呼ばされます。今回のようにクラス内に定義したインスタンスメソッドはクラスから作成したオブジェクトに対して実行する点が異なっていることに注意して下さい。

サンプルプログラム

では実際に試してみます。

ClassTest3.rb

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 )