Gene Tani
9/21/2006 2:13:00 PM
Sourav wrote:
> Hi,
> I am new to Ruby and after progamming in several other languages, I am
> really enjoying the fun of Ruby. I had question regarding the access
> specifiers in Ruby; suppose the following two classes,
>
> class C1
> private
> def aMethod
> "I am a method"
> end
> end
>
> class C2 < C1
> public :aMethod
> end
>
> In C1, aMethod was private, but in C2 it became public... so this way,
> any private method of a class can be converted to public methods. So
> then what is the use of having them (private methods) in the first
> place at all! In C++, there is a rule that, an object (data or
> function) of lower access-specifier can be upgraded to higher
> acc-specifier but the reverse is not true. Should it not also be
> implemented in Ruby?
>
Yes, there's a few ways to circumvent "private" declarations:
Object#send (this will change in 1.9), delegate with instance_eval,
anonymous modules. In your example, you don't have to subclass the
class with private methods, you can simply re-open the class definition
and declare them public.