読者です 読者をやめる 読者になる 読者になる

Ruby の private メソッドは継承先からでも呼び出すことができる

Ruby

Ruby の private メソッドは『レシーバをつけて呼び出すことができない』という仕様です。
逆にいえば、『レシーバをつけないで呼び出す事ができれば、定義したクラス以外からも private メソッドは呼び出す事ができる』ということになる。
例えば private メソッドを定義してるクラスを継承すれば、継承先で private メソッドを呼び出すことができる。

[コード]

class Base
    private
    def hoge
        :hoge
    end
end

class X < Base
    def test
        hoge
    end
end

X.new.test
# => hoge
X.new.hoge
# Error: private method `hoge' called for #<X:0x000000012cec40> (NoMethodError)

Ruby こわい。