I'm still trying to figure out the semantics of private methods in Ruby.
If i create the following class:
class Foo
def speak
puts "I'm foo"
end
private
def nono
puts "Private code"
end
end
and the following code :
myfoo = Foo.new
myfoo.speak
myfoo.nono
i get the expected results:
Foo.rb:14: private method `nono' called for #<Foo:0x80801e0> (NameError)
If a create a subclass:
class Bar < Foo
def speak
puts "I'm bar"
end
def nono
super
puts "Public code"
end
end
and the following code :
mybar = Bar.new
mybar.speak
mybar.nono
I get:
I'm bar
Private code
Public code
So my use of 'private', above, don't have the semantic i used to
consider, as anyone is able to call a private method simply by creating
a subclass.
Is there a mechanism allowing creation of "true" (from my point of
vue) private methods, ie not exported, even in subclasses ?
Feel free to send me a RTFM with a pointer. Perhaps my bad english is
responsible of my misunderstanding...
--
Eric Jacoboni -- IUP NTIE Universitde Toulouse II.