我的代码如下:
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
调用类A
中定义的私有方法。如何在继承它的类中访问私有方法?在所有面向对象的编程语言中,这种行为是否相同? Ruby如何封装?
答案 0 :(得分:9)
以下是this source的简要说明:
- 任何人都可以调用公共方法---没有访问控制。默认情况下,方法是公共的(初始化除外,它始终是私有的。)
- 受保护的方法只能由定义类及其子类的对象调用。访问权归家庭所有。
- 无法使用显式接收器调用私有方法。因为在使用它们时无法指定对象,所以只能在定义类中调用私有方法,并且可以在同一对象中调用直接后代。
醇>
来自类似问题的答案更详细地扩展了该主题:https://stackoverflow.com/a/1565640/814591