クラスメソッドとインスタンスメソッドの意味や書き方を整理してみた。
クラスメソッドは、クラスオブジェクトから呼び出せるメソッド。
インスタンスメソッドは、インスタンスオブジェクトから呼び出せるメソッド。
インスタンスメソッドは、クラスの中に、メソッドの定義『 def メソッド名 〜 end 』と表記することで定義できる。
クラスメソッドは、『 class << クラス名 〜 end 』の中にメソッドの定義をすることなので、定義できる。
例えば、Fooクラスのインスタンスメソッドは以下のように書ける。
class Foo
def foo
puts "instance methood"
end
end
Foo.new.foo # instance methood
また、Fooクラスのクラスメソッドは以下のように書ける。
class Foo
class << self
def foo
puts "class method"
end
end
end
Foo.foo # class method
class Boo
def self.boo
puts "class method"
end
end
Boo.boo # class method
クラス内でselfはクラス名を意味するので、
上記のクラスメソッドは、『 class << Foo 〜 end 』、『 def Boo.boo 〜 end 』
と同じ意味になる。