[クラス]-->{クラスメソッド}
[クラス]-->[インスタンスを生成]-->{インスタンスメソッド}
def self.メソッド名 ~ end
で定義できる。クラス名.メソッド名
で呼び出せる。例1)
Class User
def self.hello
p "こんにちは"
end
end
User.hello
例1の実行結果)
"こんにちは"
例2)
class User
class << self
def hello1
p "こんにちは1"
end
def hello2
p "こんにちは2"
end
end
end
User.hello1
User.hello2
例2の実行結果)
"こんにちは1"
"こんにちは2"
クラスメソッドはクラス全体に関わる情報を変更したり参照したりするメソッドを作成したいときに使うと便利。
例えば「User」クラスを作成した場合を例にするなら、ユーザ一覧やユーザ全体で共有しているステータスを更新するメソッドを作成する時などに使うと良い。
def メソッド名 ~ end
で定義できる。インスタンス.メソッド名
で呼び出せる。例1)
class User
def hello
p "こんにちは"
end
end
user = User.new
user.hello
例1の実行結果
"こんにちは"
user = User.new
で「User」クラスからインスタンスを作成し、「user」変数に代入している。user.hello
でインスタンスメソッドを呼び出すことができる。
今回定義した「hello」メソッドはインスタンスメソッドなため、User.hello
のようにして、クラスから呼び出すことはできない。
インスタンスメソッドは、個別のインスタンスに関わる情報を変更したり参照したりするメソッドを作成するときに使うと便利。
例えば「User」クラスを作成した場合を例にすると、特定のユーザインスタンスのプロフィールを表示したり更新したりするメソッドを作成する時に使うと良い。