Ich habe Code wie folgt:Ist Ruby private Methode in Unterklasse zugänglich?
class A
private
def p_method
puts "I'm a private method from A"
end
end
class B < A
def some_method
p_method
end
end
b = B.new
b.p_method # => Error: Private method can not be called
b.some_method # => I'm a private method from A
b.some_method
eine private Methode aufruft, die A
in der Klasse definiert ist. Wie kann auf eine private Methode in der Klasse zugegriffen werden, in der sie vererbt wird? Ist dieses Verhalten in allen objektorientierten Programmiersprachen gleich? Wie macht Ruby Kapselung?
[Gibt es gute Gründe für die 'private', wie es funktioniert in Ruby arbeiten?] (Https: // stackoverflow.com/questions/1565269/are-there-good-reasons-for-private-to-work-the-way-it-does-in-ruby) – cremno
Sie greifen tatsächlich auf die private Methode 'p_method' Ihrer Basis zu Klasse aus dem Instanzbereich der Subklasse, gut. Es ist offensichtlich, warum Sie von außen nicht darauf zugreifen können. Der private Bereich bleibt erhalten, er wird sich nicht ändern, wenn Sie eine Unterklasse verwenden. – limekin
Wie ist die Vererbung oder Kapselung für das Problem der privaten Methoden relevant? – sawa