|
|
1
4
不,没有办法强迫你控制之外的代码 不 调用其他完全可访问的内容。你所能做的最好的就是强烈反对在课堂上的文档练习。 如果后代调用继承的方法,会产生什么后果?如果这意味着程序停止工作,那就这样吧。编写子类的程序员将测试代码,注意它不起作用,然后查阅该方法的文档以确保他正确地使用了它(此时他将了解到他没有使用)。 你可以采取另一种方法。提供一个受保护的方法指针属性,而不是使函数成为虚拟函数,并让子体覆盖它。
基类提供子孙可以指派的方法指针来指示他们希望自己的特殊处理。如果子体为该属性提供值,则基类的
|
|
|
2
1
实现祖先时,重写方法,但不要调用方法内部继承的。
|
|
|
3
1
如果子体在您的控制下,只需重写方法 不使用 继承 关键字。否则,那就不算什么了。 完成-由重写getfile方法的人来使用 是否继承方法。除了,也许,杰米的主意。 |
|
|
4
1
可以将tancestor.getfile设为abtract,因此它必须被重写,但是为那些不想自己实现它的人提供一个帮助方法吗? 另外,您是否无法控制谁正在重写此方法?你的团队外部人员是否使用它?
编辑:如果你能控制子代代码,史蒂夫当然是对的。 |
|
|
5
0
我不认为你真的想这么做,但无论如何,听起来你并没有正确地使用继承。 如果你真的需要这样做,也许你可以用 strategy pattern 相反?将getfile解压到它自己的类层次结构中,使用定义协定的抽象类(比如tabstractfileutils)和实现协定的具体子类(包括默认的tdefaultfileutils)。构造函数可以获取tabstractfileutils的实例。这意味着调用方(或工厂方法)负责提供正确的实现。 这不会阻止其他人对tdefaultfileutils进行子类化并调用继承的getfile,但这并不是继承的工作方式。 |
|
|
6
0
好吧,必须澄清这个问题给了我一个解决方案:
|
|
|
7
0
当然,没有完美的解决方案,例如:
如果getfile不调用其他虚拟方法并且您不关心并发性,那么这将起作用。 |
|
zeus · 如何在调整数组大小后保持指向动态数组的指针有效? 1 年前 |
|
|
SignalOne · 德尔福(FMX)循环参考 2 年前 |
|
|
Sascha Ott · 如何从线程调用线程的方法? 2 年前 |
|
|
user1580348 · 问题:如何在上次最小化后还原应用程序? 2 年前 |
|
tua · Delphi的TLinkLabel坏了吗? 2 年前 |
|
|
Frank.Wu · delphi:RGB到HSL不正确 2 年前 |