oop中級
Ruby でクラスのインスタンスメソッドからプライベートメソッドを呼び出せますか?
- 呼び出せない
- 呼び出せるが、必ず self.method_name と書く必要がある
- 呼び出せる(レシーバーなしで)
- protected メソッドとして再定義すれば呼び出せる
解説
Ruby のプライベートメソッドは同じクラスのインスタンスメソッドからレシーバーなしで呼び出せます。基礎として「private はレシーバーなしで呼ぶ」と覚えておきましょう。なお Ruby 2.7 以降は例外的に `self.method_name` も許可されましたが、クラス外からは依然として呼び出せません。