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

前回の記事Ruby メソッド def self.XXXX のselfってなに?で書いた内容の続きです。

 

インスタンスメソッドとクラスメソッドの違いや使い分けについて

説明していきます。

  1. インスタンスメソッドは他インスタンスで扱ったデータを扱う事ができるメソッド
  2. クラスメソッドは他インスタンスで扱ったデータは扱えず独立したメソッド

 

実装例は以下のとおりです。

class Test
    def initialize(name)
        @name = name
    end
    
    # Testクラスに関連する他インスタンスのデータを使うメソッド
    # インスタンスメソッド
    def get_name
        puts "私は#{@name}です"
    end

    # Testクラスに関連はするが他インスタンスに含まれるデータを使わない
    # 独立したメソッド
    # クラスメソッド
    def self.view_name(name)
        puts "私は#{name}です"
    end
end

test = Test.new('Mike')
test.get_name
# => 私はMikeです

Test.view_name('Mike')
# => 私はMikeです

 

うまく使い分けて使っていきたいですね(*^^*)

 

参考になれば幸いです(*^^*)