我有以下用例...
itcl::class A {
public method Foo {} {}
}
itcl::class B {
inherit A
public method Foo {} {} // Should not be allowed
}
在Tcl / itcl中有没有办法停止功能重写?
答案 0 :(得分:0)
我完全不相信itcl可以做到。 8.7中的TclOO可以 sort 来做到这一点(通过将超类上的方法设为私有),但是您也将无法从其他类中调用它。如果子类可以看到它,那么它也可以覆盖它。一般原则是,如果用户代码希望引起麻烦,则可以;这会在过程中造成麻烦,但这就是语言的工作方式:毕竟,您还可以覆盖内置命令,例如set
和if
和proc
,这可能会导致更多的恶作剧。
请记住,在Tcl中,方法的可见性不是安全机制。安全机制总是与解释器联系在一起。