oop中級

Ruby でクラスのインスタンスメソッドからプライベートメソッドを呼び出せますか?

  • 呼び出せない
  • 呼び出せるが、必ず self.method_name と書く必要がある
  • 呼び出せる(レシーバーなしで)
  • protected メソッドとして再定義すれば呼び出せる

解説

Ruby のプライベートメソッドは同じクラスのインスタンスメソッドからレシーバーなしで呼び出せます。基礎として「private はレシーバーなしで呼ぶ」と覚えておきましょう。なお Ruby 2.7 以降は例外的に `self.method_name` も許可されましたが、クラス外からは依然として呼び出せません。