【Ruby】クラスメソッドとインスタンスメソッド


クラスメソッドとインスタンスメソッド

クラスの中で定義できるメソッドとして、クラスメソッドインスタンスメソッドがあります。

クラスメソッドとインスタンスメソッドの違い

下記の様な違いがあります。
・クラスメソッドは、クラスから実行できる。
・インスタンスメソッドは、インスタンスから実行できる。

クラスメソッドはクラスから直接呼び出せることができるのに対して、
インスタンスメソッドはインスタンスを生成しないと呼び出すことができません。

クラスメソッド

クラスメソッドの特徴としては、
・クラスから実行できるメソッド
def self.メソッド名 〜 endでクラス内からメソッドが定義できる。
クラス名.メソッド名で呼び出せる。

サンプルコード例)

class User
  def self.hello
    p "こんにちは"
  end
end

User.hello

【実行結果】
"こんにちは"

class User
  class << self
    def hello1
      p "こんにちは1"
    end

    def hello2
      p "こんにちは2"
    end
  end
end

User.hello1
User.hello2

【実行結果】
"こんにちは1"
"こんにちは2"

クラスメソッドの用途

クラスメソッドはクラス全体に関わる情報を変更や参照したりするのに便利。
「User」クラスで例えると、ユーザーの一覧表示やユーザー全体で共有指定して使用するステータスを更新するメソッドを作成するときに使うといい。

インスタンスメソッド

・インスタンスから実行できるメソッド。
def  メソッド名 〜 endで定義できる。
インスタンス.メソッド名で定義できる。

controller.rb
class User
  def hello
    p "こんにちは"
  end
end

user = User.new
user.hello

【実行結果】
"こんにちは"

user = User.newでインスタンスを作成し、メソッドを実行している。
User.hello の様にクラスから呼び出すことはできない。

インスタンスメソッドの用途

インスタンスメソッドは個別のインスタンスに関わる情報を変更、参照したりするのに便利。