Tag: access specifier

ruby中的Private vs Protected方法

如果方法受到保护,则可以由定义类或其子类的任何实例调用它。 如果方法是私有的,则只能在调用对象的上下文中调用它 – 它永远不可能直接访问另一个对象的私有方法,即使该对象与调用者属于同一个类。 当我在ruby中搜索private和protected方法之间的区别时,我从net获得了这个定义。 我对此有两个疑问 class Abc def abc xyz end protected def xyz p “hai” end end a=Abc.new a.abc 在这个我隐含地在对象a上调用xyz,这就是我将如何调用xyz,即使它是私有的。所以“它可能被定义类的任何实例调用”这是什么意思????? 其次, class Abc def abc(obj) obj.xyz1 obj.xyz2 obj.xyz3 end end class Xyz def xyz1 p “called” end private def xyz2 p “called” end protected def xyz3 p “called” end end a=Abc.new b=Xyz.new a.abc(b) […]

有没有办法从Ruby中的实例调用私有Class方法?

除了self.class.send :method, args…当然。 我想在类和实例级别提供一个相当复杂的方法,而不需要复制代码。 更新: @Jonathan Branam:这是我的假设,但我想确保没有其他人找到方法。 Ruby中的可见性与Java中的可见性非常不同。 你也很正确, private不能在类方法上工作,尽管这会声明一个私有类方法: class Foo class < NoMethodError: private method ‘bar’ called for Foo:Class

我们何时应该考虑使用私人或受保护?

只是想知道,我们什么时候才能真正使用private或protected的模型中的某些方法? 有时我不能不把我的方法归为private也protected 。 我只是保持原样。 但我知道这一定是一种不好的做法,否则这两个分组将不会在编程中创建。 谢谢。