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

标签 java oop inheritance

这个问题是在求职面试、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/

相关文章:

java - 多类基础,将打印类放入main方法

c# - 如何判断对象是否继承自抽象泛型类

c# - 如何知道继承的泛型类型的基类型?

c++ - 为什么从基模板类继承并将两个类文件放在单独的头文件中时会出现重定义错误?

java - 是否有 JAXB 注释可以执行此操作?

c++ - 友元函数返回对私有(private)数据成员的引用

java - Files.createDirectory() 真的是非阻塞的吗?

database - 在哪里定义安全角色?

java - Android 找不到符号方法 getMap()

java - 使用一维数组的 Tic Tac Toe 程序问题