メソッド 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が何であっても同じ結果を返すメソッドは、 レシーバーを 意識する必要がありませんので、関数と考えてもいいという ことになります。
-
-
-
-
- 以上いろいろなところからのコピペ
-
-
-