|
|
1
34
您可能会发现阅读ruby对 public, private and protected. (跳到访问控制) 编辑: 这个解决方案现在提供了一种在Ruby对象中假装Java的私有理想的方法。 Private定义为可以 只有 我想你在找更接近保护的东西。其行为类似于未提供可见性的Java访问器(例如:public、private、protected) 通过将Spy中的private更改为protected,可以保护您所有的6条语句。 受保护的方法可以由定义类或其子类的任何实例调用。对self显式或隐式调用都是受保护方法的有效语句,只要调用方是响应调用的对象的类,或者从该类继承。
至于报表4。你认为这是为了避免模棱两可是正确的。它更能保护ruby动态特性的潜在危害。它确保您不能通过稍后再次打开类来覆盖访问器。可能出现的情况,例如通过评估受污染的代码。 我只能推测导致这些行为的设计决策。我觉得这主要是因为语言的动态性。 另外,如果你真的想给东西一个私有的java定义。仅适用于定义它的类,甚至不适用于子类。您可以将self.inherited方法添加到类中,以删除对要限制访问的方法的引用。 使权重属性无法从子类访问:
将undef_方法调用替换为以下内容可能更有意义:
这提供了一个更有用的错误和相同的功能。 send对于避免调用其他类的私有方法是必要的。只是用来证明事情确实在起作用。
可以指定要阻止访问的私有方法的类变量,而不是拒绝对所有私有方法的访问。您也可以将send设置为私有,但从对象外部调用send是合法的。 |
|
|
Latenec · 私人IBOutlets Swift 8 年前 |
|
RainingChain · 以私有类为参数的公共函数 8 年前 |
|
|
Praveen Kumar · 如何检查IPFS中的私有文件 9 年前 |
|
|
barabba58 · Wordpress禁用私人帖子链接 10 年前 |
|
|
and0 · 访问包私有子类的实例作为其公共超类 10 年前 |
|
|
Pukki · 重写派生类C中基类私有成员的行为++ 10 年前 |