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