概要
Module#protected(name) -> ()
詳細
メソッドを protected に設定します。
引数が与えられた時には引数によって指定されたメソッドを protected に 設定する。
引数なしのときは今後このクラスまたはモジュール定義内で新規に定義されるメソッドを protected にする。
サンプルコード
require 'english' class Hoge %i{hoge hige hage}.each do |m| define_method m do puts m end end private :hage protected :hige public :hoge end h = Hoge.new h.hoge begin h.hige rescue # protected method をクラス外から利用しようとしてエラー print "error! ", $ERROR_INFO, "\n" end class Hige < Hoge def higehige # 継承したクラス内から protected method を利用 hige self.hige end end Hige.new.higehige begin h.hage rescue # private method をクラス外から利用しようとしてエラー print "error! ", $ERROR_INFO, "\n" end class Hage < Hoge def hagehage # 継承したクラス内から private method を利用 hage # レシーバー付きでの呼び出しは不可 # self.hage end end Hage.new.hagehage
出力
$ ruby protected.rb hoge error! protected method `hige' called for #<Hoge:0x0000060045e7b8> hige hige error! private method `hage' called for #<Hoge:0x0000060045e7b8> hage