Rubyのメソッドの公開レベル/呼び出し制限
メソッドは public、private、protected の三通りの呼び出し制限を持ちます。
public に設定されたメソッドは制限なしに呼び出せます。
private に設定されたメソッドは関数形式でしか呼び出せません。 ただし self.foo のように self. と書かれている場合は呼び出すことができます。
関数形式でしか呼び出せないというのは、「レシーバを指定できない」という意味
つまり、クラス (サブクラスを含む) の内でのみ呼び出せる
private なメソッドを定義するためのメソッドを使う
protected に設定されたメソッドは、そのメソッドを持つオブジェクトが selfであるコンテキスト(メソッド定義式やinstance_eval)でのみ呼び出せます。
private と違って、レシーバ (self) の所属クラスが、そのメソッドのクラスと同じなら呼び出せる
つまり、オブジェクト自身または自分と同じクラス (サブクラスを含む) の中でのみ呼び出せる
initializeメソッド以外のインスタンスメソッドは、デフォルトでpublicになる
code:sample.rb
# privateなクラスメソッド
class Hoge
private_class_method def self.baz
'To infinity and beyond!'
end
end