#クラスメソッドとインスタンスメソッド
クラスの中で定義できるメソッドとして、クラスメソッド
とインスタンスメソッド
があります。
##クラスメソッドとインスタンスメソッドの違い
下記の様な違いがあります。
・クラスメソッドは、クラスから実行できる。
・インスタンスメソッドは、インスタンスから実行できる。
クラスメソッドはクラスから直接呼び出せることができるのに対して、
インスタンスメソッドはインスタンスを生成しないと呼び出すことができません。
##クラスメソッド
クラスメソッドの特徴としては、
・クラスから実行できるメソッド
・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
で定義できる。
・インスタンス.メソッド名
で定義できる。
class User
def hello
p "こんにちは"
end
end
user = User.new
user.hello
【実行結果】
"こんにちは"
user = User.new
でインスタンスを作成し、メソッドを実行している。
User.hello
の様にクラスから呼び出すことはできない。
###インスタンスメソッドの用途
インスタンスメソッドは個別のインスタンスに関わる情報を変更、参照したりするのに便利。