例如,我有这样的代码:
class Foo {}
class Bar is Foo {}
Run Code Online (Sandbox Code Playgroud)
虽然这个行动的用处是有争议的,但是有可能禁止继承Foo吗?
Jon*_*ton 11
在Perl 6语言中没有内置的方法来禁止继承类,这是一个刻意采取的设计决策.即使使用元编程也无法实现这一点,因为继承行为是由子类驱动的,父类在此过程中没有发言权.
但是,通过将它们声明为a submethod而不是a ,可以将各个方法标记为不被继承method.
class P {
submethod m() { say "not inherited" }
}
class C is P {
}
say ?P.can('m'); # True
say ?C.can('m'); # False
Run Code Online (Sandbox Code Playgroud)