アクセス制限

def foo
end
private :foo
 
def boo
end
protected :foo
 
def woo
end
public :woo

 : とメソッド名前の間には空白をはさんではいけない。
 
ちなみに, private としたメソッドを子クラスで再定義すると, 上書きされてしまうので注意が必要。

class Parent
    def foo(arg)
       print “parent “, arg, “\n”
    end
    private :foo
    def woo
      foo(“hello”)
    end
end
 
class Child < Parent
    def foo
       print “child\n”
    end
end
 
Child.new.woo
 
# result:
# in `foo’: wrong number of arguments (1 for 0) (ArgumentError)

 
参考:
<http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AF%A5%E9%A5%B9%A1
%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1#a.b8.c6.a4.d3.bd.d0.a4.
b7.c0.a9.b8.c2
>