我有以下用例...
itcl::class A {
public method Foo {} {}
}
itcl::class B {
inherit A
public method Foo {} {} // Should not be allowed
}有没有办法停止Tcl/ itcl中的函数重写?
发布于 2018-12-03 20:06:24
我完全不相信itcl能做到这一点。8.7中的TclOO可以做到这一点(通过将超类上的方法设为私有),但您也不能从其他类调用它;如果一个子类可以看到它,它也可以覆盖它。一般原则是,如果用户代码希望制造麻烦,它就会造成麻烦;它会在这个过程中给自己带来麻烦,但这就是语言的工作方式:毕竟,您还可以覆盖set、if和proc等内置命令,而这可能会造成更多的麻烦。
请记住,在Tcl中,方法的可见性不是一种安全机制。安全机制总是与解释器绑定在一起。
https://stackoverflow.com/questions/53593074
复制相似问题