Developers開発の実験等々、クイックサーブのメンバーが好き好きに書き込んでいく場所です。概要Rubyのprivateメソッドやprotectedメソッドの挙動が、なんかJavaやC#でよく見るオブジェクト指向な挙動と違うので、動かしながら調べてみた。#Hello!sendメソッドを使うと、クラスの内側からメソッドを呼び出すのと同じように実行できるので、privateメソッドも呼べてしまう。trueクラスメソッド、private_instance_methodsは、クラスに定義されているプライベートメソッドの一覧を、メソッド名(シンボル)の配列で取得できる。これは親クラスのも含んで、Hogeクラスには73のプライベートメソッドがあることがわかる。private_method_defined?メソッドを使えば、指定したプライベートメソッドが存在するか確認できる。エラークラス内からは呼べるけど、レシーバ付きでクラスの外からは呼べない。protected_instance_methodsメソッドでprotectedメソッド一覧を取得して、protected_method_defined?メソッドで有無を検証。endendHoge.new.funcまずはprivateメソッドとprotectedメソッド両方定義したクラスで、クラス内から両方を呼び出してみる。どちらも呼び出し成功。endendHoge.new.func今度はself付きで呼んでみると、初めて違いが出た。protectedなメソッドは呼び出せたのに、privateなメソッドは呼び出せない。endendHoge.new.funcさらに形を変えて、Hogeクラス内で新しくHogeオブジェクトを作成、同様にメソッドを呼び出した場合も結果は同じく、protectedメソッドだけ呼び出せるようになる。NGprotectedに使いみちある?そうそう無いと思う。公式ドキュメントの例だと以下の例があげられてる。endend上記みたいにクラス内で自身と他のインスタンス両方で呼び出したいメソッドがあるような場合には使えるっぽい。コメントをキャンセルメールアドレスが公開されることはありません。