重写ExecutorInterface接口doStuff()方法相关技术问题咨询
问题解答
1. 重写doStuff()后getData()是否会被调用
先澄清一个基础概念:普通接口仅定义方法的签名规范,不会包含具体执行逻辑。你提到的「原接口
doStuff()内部会调用getData()」,说明这个doStuff()是接口的默认实现方法(比如Java 8+的default方法、Kotlin接口默认实现这类场景),也有可能是你将抽象类误表述为了接口,不影响后续结论。
结论是:如果你重写doStuff()时没有主动调用父接口/父类的原有doStuff()实现,getData()不会被自动调用。
重写的本质就是用子类的新实现覆盖父级的原有实现,没有显式调用的前提下,父级的旧逻辑不会自动执行。
2. 不丢失原有功能的前提下新增功能的方案
核心逻辑非常简单:在你重写的doStuff()方法里,先显式调用父级的原有doStuff()实现,再追加自定义的新逻辑即可。
以下为Java场景的代码示例:
public class Executor implements ExecutorInterface { @Override public void doStuff() { // 调用父接口的默认实现,保留所有原有逻辑(包含getData()的调用) ExecutorInterface.super.doStuff(); // 下方编写你需要新增的功能代码 customAddLogic(); } private void customAddLogic() { // 你的自定义业务逻辑 } }
如果是其他开发场景,仅需要调整调用父级实现的语法即可,整体逻辑完全一致:
- 如果是抽象类的场景,调用语法改为
super.doStuff() - 如果是PHP、Python等其他语言,查找对应子类调用父类同名方法的语法替换即可
内容的提问来源于stack exchange,提问作者Lets Play Nebulous
相关产品推荐
相关产品推荐

