0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

インスタンスメソッド・クラスメソッド

Posted at

はじめに

クラスメソッド内でインスタンスメソッドを呼び出す際のロジックが曖昧、、、
そもそもインスタンスメソッド・クラスメソッドではメソッドの違いが曖昧だった

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

  • 特定のクラスのインスタンスオブジェクトに対して呼び出される
  • 特定のクラスのインスタンスに紐づいており、そのインスタンスの状態やデータにアクセスすることができる
  • クラス内でselfを用いずに定義されたメソッド
  • クラスの中にメソッドを作成するとそれがインスタンスメソッドになる

実際の使い方

person.rb
class Person
  def initialize(name)
    @name = name
  end

  def greet
    puts "Hello, my name is #{@name}."
  end
end

person = Person.new("Alice")
person.greet

クラスメソッドとは

  • そのクラスのインスタンス(オブジェクト)ではなく、クラス自体に対して呼び出される
  • 特定のオブジェクトの状態に依存せず、クラス全体に関連する処理や操作をすることができる
  • クラス内でselfを用いて定義されたメソッド
  • メソッド名の前にselfキーワードを付けて作成するとそれがクラスメソッドになる

実際の使い方

person.rb
class Person
  def initialize(name)
    @name = name
  end

  def self.my_class_method
    puts "This is a class method."
  end
end

Person.my_class_method

クラスメソッド内でインスタンスメソッドを呼び出す場合の注意点

  • インスタンスメソッドはインスタンスを介して呼び出す必要がある
    →クラスメソッドはインスタンスに紐づいていないため、インスタンスメソッドを直接呼び出すことはできない。そのため、まずクラスメソッド内でインスタンスを生成する必要がある。

  • クラスメソッド内でインスタンスを生成する場合、適切なコンテキストやデータを与える必要がある
    →インスタンスメソッドは、特定のオブジェクトの状態やデータにアクセスするために使用される。そのため、クラスメソッド内でインスタンスメソッドを呼び出す際には、適切な引数や初期化パラメータを提供する必要がある。

  • クラスメソッド内でインスタンスメソッドを呼び出す場合、インスタンスの返り値や状態を適切に処理する必要がある
    →クラスメソッドは通常、インスタンスを介さずに操作を行うため、インスタンスメソッドからの返り値や状態を適切に受け取って処理する必要がある。

実際の使い方

myclass.rb
class MyClass
  def self.my_class_method
    instance = MyClass.new #まず、インスタンスを生成する
    instance.my_instance_method #インスタンスを介して呼び出す
  end

  def my_instance_method #インスタンスメソッド
    puts "This is an instance method."
  end
end

MyClass.my_class_method

まとめ

インスタンスメソッド・クラスメソッドの違いを理解することで、クラスメソッド内でインスタンスメソッドを呼び出す場合でも、迷わずロジックが書ける

参照

【プログラミング初心者向け】クラスメソッドとインスタンスメソッドはどう使い分けるべき?

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?