メソッド 3つのp(private,public,protected)について

    • public private protected メソッド

http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fdef.html
TR P132
RP P267


メソッドは public、private、protected の三通りの 呼び出し制限を持ちます。

  • public に設定されたメソッドは制限なしに呼び出せます。

RP-267(外部呼び出し可)

  • private に設定されたメソッドは関数形式でのみ呼びだせる

(レシーバー形式では呼び出せない)
したがって、自クラスおよびサブクラスからしか参照できない
RP-267(外部呼び出し不可)

  • protected に設定されたメソッドは

そのメソッドを持つオブジェクトが
selfであるコンテキスト(メソッド定義式やinstance_eval)でのみ呼び出せ ます。
RP-267(同種のオブジェクトに対する外部呼び出し可)

protectedもprivate同様に、自クラス及びサブクラスからのみ参照可能。
関数形式でもレシーバー形式でも呼び出せます。

    • 関数

http://www.ruby-lang.org/ja/old-man/html/FAQ_A5E1A5BDA5C3A5C9.html
Rubyにおいて関数のように見えるものはすべてレシーバ(self)を省略した形のメソッド

def writeln(str)
print(str, "\n")
end

writeln("Hello, World!")

のように一見関数のように見えるものも、Objectクラスに定義された メソッドであり、 隠されたレシーバーselfに送られている したがってRubyを純粋なオブジェクト指向言語 と呼ぶことができます。

組み込み関数のように、selfが何であっても同じ結果を返すメソッドは、 レシーバーを 意識する必要がありませんので、関数と考えてもいいという ことになります。

          • 以上いろいろなところからのコピペ