mam kod w następujący sposób:Czy prywatna metoda Ruby jest dostępna w podklasie?
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
nazywa prywatną metodę, która jest zdefiniowana w klasie A
. W jaki sposób można uzyskać dostęp do metody prywatnej w klasie, w której jest dziedziczona? Czy to zachowanie jest takie samo we wszystkich językach programowania obiektowego? Jak działa enkapsulacja Ruby?
[Czy istnieją dobre powody „prywatny”, aby działać w sposób ma to miejsce w Ruby?] (Https: // stackoverflow.com/questions/1565269/are-there-good-reasons-for-private-to-work-the-way-it-does-in-ruby) – cremno
W rzeczywistości uzyskujesz dostęp do prywatnej metody 'p_method' swojej bazy klasa z wewnątrz zakresu instancji klasy sub, po prostu w porządku. To oczywiste, dlaczego nie możesz uzyskać do niego dostępu z zewnątrz. Zakres prywatny jest zachowany, nie zmieni się, gdy jesteś podklasą. – limekin
W jaki sposób dziedziczenie lub enkapsulacja są istotne w przypadku prywatnych metod? – sawa