⚖️

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

2024/04/24に公開

目的

クラスメソッド と インスタンスメソッド の違いについて学習した内容を記載します。

内容

  1. クラスとは? メソッドとは?
  2. クラスメソッド とは?
  3. クラスメソッド と インスタンスメソッドの違い

クラスとは? メソッドとは?

クラスとは「設計図」のようなものです。下記のようにMyClassは特定のタイプのオブジェクトの設計図です。
メソッドとは処理や振る舞いを定義する役割があります。例ではclass_methodで記載されています。

[例]

class MyClass
  def class_method
    puts "class method"
  end
end

MyClass.class_method  # => "class method"
MyClass を レシピ本 に例えた場合
class MyClass(レシピ本)
  def self.class_method(ハンバーガーのレシピ)
    puts "This is a class method"(ハンバーガーの作り方)
  end
end

MyClass.class_method  # => "This is a class method"(ハンバーガーの作り方)

⇩ コードの記載

class Cookbook(レシピ本)
  def hamburger_recipe(ハンバーガーのレシピ)
    puts "class method: Hamburger Recipe"(ハンバーガーの作り方)
  end
end

Cookbook.hamburger_recipe  # => "class method: Hamburger Recipe"(ハンバーガーの作り方)

クラスメソッド とは?

クラスメソッドは、あるクラスに属するメソッドのうち、そのクラス自体に関連する操作や振る舞いを定義するためのメソッドです。クラスメソッドは、インスタンスを生成せずに直接クラスに対して呼び出すことができます。

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

クラスメソッドはクラス自体に関連し、そのクラス全体に影響を与える操作を提供します。
インスタンスメソッドは、クラスから生成されたインスタンスに対して呼び出され、そのインスタンスの特定の状態や振る舞いに対する操作を行います。

クラスメソッドの例
class MyClass
  def self.class_method
    puts "This is a class method"
  end
end

# クラスメソッドを呼び出す方法
MyClass.class_method

クラスメソッドはクラスに関連付けられており、クラス名を使って直接呼び出されます。

インスタンスメソッドの例
class MyClass
  def instance_method
    puts "This is an instance method"
  end
end

# インスタンスを作成
my_object = MyClass.new

# インスタンスメソッドを呼び出す方法
my_object.instance_method

インスタンスメソッドはオブジェクトに関連付けられており、そのオブジェクトを介して呼び出されます。






GitHubで編集を提案

Discussion