这个问题是在求职面试、Java 开发、学生职位时被问到的。
interface SomeInterface {
public void execute();
}
class A implements SomeInterface {
public void execute() {...}
}
问题是:
新开发人员被要求创建一个扩展类 A 的类,并创建名为 Execute
的方法,该方法将做一些事情。我们应该如何重写上面的代码,以便在调用方法 Execute
时输出“启动进程”
(当然打印不应该在B类)。
class B extends A {
public void execute() {
//some code goes here
}
}
我知道可以用两个函数来完成,其中一个是抽象的。 请指教...
最佳答案
这是 template pattern 的示例.抽象父类(super class) A 通过执行“标准”部分将结构强加给处理——在这种情况下打印一些东西——然后调用子类的具体实现来执行实际/特定处理:
abstract class A implements someIterface {
public void Execute() {
System.out.println("start process"):
doExecute();
}
protected abstract void doExecute();
}
class B extends A {
protected void doExecute() {
// some code goes here
}
}
它更常见于:
- 要调用的方法是
execute
而不是Execute
- 要调用的接口(interface)
SomeInterface
而不是someInterface
- 具有
execute
方法的接口(interface)
关于java - 如何覆盖 Java 中的方法,但仍然具有父方法的部分功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9063884/