1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2024-06-20

クラスメソッドインスタンスメソッドはオブジェクト指向プログラミングにおいて重要な概念です。この記事では、Rubyプログラミング言語におけるクラスメソッドとインスタンスメソッドについて説明します。

クラスメソッドとは?

クラスメソッドはクラス上に定義され、クラスのインスタンスではなく、クラス自体に対して直接呼び出すことができるメソッドです。これらはクラス全体に使用されることが多いです。

クラスメソッドの定義方法

Rubyではクラスメソッドの定義方法は非常に柔軟です。以下にクラスメソッドを定義するための3つの一般的な方法を示します。

# 方法1
class Car
  def self.total
    10
  end
end

puts Car.total # => 10

# 方法2
class Car
  class << self
    def total
      10
    end
  end
end

puts Car.total # => 10

# 方法3
class Car; end

def Car.total
  10
end

puts Car.total # => 10
  • 方法1: 最も一般的な定義方法で、selfを用いてクラスメソッドを定義
  • 方法2: クラス全体に適用する複数のメソッドを定義する場合に便利な方法で、class << selfを用いてクラスメソッドを定義
  • 方法3: クラス外部でクラスメソッドを定義する特殊な方法

インスタンスメソッドとは?

インスタンスメソッドはクラス内に定義され、そのクラスのインスタンスに対して呼び出すことができるメソッドです。これにより、特定のインスタンスのデータにアクセスし、変更することができます。

インスタンスメソッドの定義方法

# 方法1
class Car
  def name
    'Toyota'
  end
end

puts Car.new.name # "Toyota"

# 方法2
class Car
  attr_accessor :name
end

car = Car.new
car.name = 'Toyota'

puts car.name # "Toyota"

# 方法3
class Car; end

car = Car.new
def car.name
  'Toyota'
end

puts car.name # "Toyota"
  • 方法1: これは最も一般的なインスタンスメソッドの定義方法で、そのクラスのすべてのインスタンスに適用される
  • 方法2: attr_accessorは、name属性のgetterおよびsetterメソッドを作成し、そのクラスのすべてのインスタンスに適用される
  • 方法3: これは特定のオブジェクトにのみ適用されるメソッドの定義方法で、他のインスタンスには影響しない

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

クラスメソッド:

  • クラス上で呼び出される
  • クラスメソッドは、クラス全体に関連する操作が必要なときに使用される。例えば、サンプルオブジェクトの作成、データの統計、検索の実行など
  • 例: User.create_sample_users

インスタンスメソッド:

  • 特定のオブジェクト上で呼び出される
  • インスタンスメソッドは、特定のオブジェクトのデータにアクセスしたり、変更したりする必要があるときに使用される
  • 例: user.profile

クラスメソッドとインスタンスメソッドの違いは、Rubyプログラミングにおいて重要な側面です。正しく理解し適用することで、強力で保守しやすく、効率的なプログラムを作成することができます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?