例如,我有这样的代码:
class Foo {}
class Bar is Foo {}
虽然此操作的有效性值得商,,但是否可以禁止从Foo
继承?
答案 0 :(得分:11)
在Perl 6语言中没有内置的方法来禁止类的继承,这是一个经过精心设计的决定。还不清楚即使通过元编程也可以实现这一目标,因为继承行为是由子类驱动的,而父类在过程中没有发言权。
但是,可以通过将各个方法声明为submethod
而不是method
来标记未继承的方法。
class P {
submethod m() { say "not inherited" }
}
class C is P {
}
say ?P.can('m'); # True
say ?C.can('m'); # False