我有一个类和另一个继承自它的类。我在父类中定义了一些方法,我想私下与子类共享,但不与世界共享。
对于此类方法,我如何才能在其他编程语言中实现类似 protected 范围?
我考虑过使用私有(private)方法引入一个角色,但我还需要维护一些私有(private)状态以供方法使用,并且我需要创建两个类 does
角色,但这似乎导致实例变量(角色的)在两个类中重复......
最佳答案
有两个步骤可以做你想做的事。首先是要有父类trusts
子类:
class Dog { ... } # forward declaration necessary
class Animal {
trusts Dog; # Dog now has access to private methods
method !secret {
return 42
}
}
class Dog is Animal {
method tell-secret { ... }
}
现在,让狗揭开动物的 secret 。你可能认为这很简单method tell-secret {
say self!secret
}
但这不起作用。虽然调用公共(public)方法将遵循标准 MRO 来确定被调用的方法,但对于私有(private)方法,我们必须是显式的。在这种情况下,self!secret
将引用 method !secret
直接属于Dog
.引用 Animal
的 secret 方法,我们明确表示:method tell-secret {
say self!Animal::secret
}
现在Dog可以说会洒 bean 了。您会注意到的一件事是,一旦一个类信任另一个类,它就会完全开放自己。没有办法将信任限制在单个方法上。
关于oop - 如何在 Raku 中定义 protected 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63387285/