如何在Java中覆盖方法,但仍具有父方法的部分功能

Vic*_*tor 8 java oop inheritance

这个问题在求职面试,Java开发,学生职位期间被问到.

interface SomeInterface {
    public void execute();
}

class A implements SomeInterface {
    public void execute() {...}   
}
Run Code Online (Sandbox Code Playgroud)

问题是:

新开发人员被要求创建一个扩展类A的类,并创建名为的方法Execute,这个方法会做一些事情.我们应该如何重写上面的代码,以便在Execute调用方法时有一个输出"启动过程" (当然不应该在B类中完成打印).

class B extends A {
   public void execute() {
      //some code goes here 
   }
}
Run Code Online (Sandbox Code Playgroud)

我知道它可以用两个函数完成,其中一个是抽象的.请指教...

Boh*_*ian 10

这是模板模式的一个示例.抽象超类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
    }
}
Run Code Online (Sandbox Code Playgroud)

对于以下情况更常见:

  • 要调用的方法execute而不是Execute
  • 要调用的接口SomeInterface而不是someInterface
  • 有接口的方法 execute