インスタンスメソッドを定義する

クラスは何かを行うための設計図です。そこで具体的に何をさせたいのかをクラスの中に記述していく必要があります。その処理を記述するのがメソッドとなります。メソッドはいくつか種類がありますが、クラスから生成したインスタンスからしか呼び出せないメソッドをインスタンスメソッドと呼びます。ここでは Ruby でインスタンスメソッドを定義する方法について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 16 日更新)

インスタンスメソッドを定義する

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

インスタンスメソッドは次のように定義します。

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 )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。