java - 覆盖父类的特定行

标签 java inheritance super

我有一个 Writer 类,它有一个方法 process()。子类 TextWriter 扩展了 Writer

我想使用父类的方法process(),除了方法的最后一行,我想根据子类的需要自定义。

有没有什么方法可以调用super(),使我只能继承父类方法的特定部分?

我知道这是糟糕的设计,在这种情况下必须使用接口(interface)。但我正在努力对一些旧代码进行一些更改,我想知道是否可以这样做。

最佳答案

您应该将联合代码放在 protected 方法中,并让流程方法调用它,例如:

public class Writer {


    protected void process_subProcess(){
        //most of process code
    }

    public void process(){
        process_subProcess();
        //specific last line

    }
}

然后 TextWriter 只覆盖它需要的位。 subProcess 不是一个好名字,根据 subProcess 的实际作用考虑一个更好的名字

public class TextWriter extends Writer{

    @Override
    public void process(){
        process_subProcess();
        //different final line
    }

}

联合代码受到保护,以便子类可以访问它,但您不能不小心从包外使用 subProcess 方法

关于java - 覆盖父类的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16277311/

相关文章:

java - 单击按钮时新 Intent 未启动

C# 存储库设计问题

c# - 我可以让我的类在运行时从另一个类继承吗?

java - 如何在 JRuby 中导入的 Java 类中停止对 super 的调用以进行测试

java - 为什么 'T.super.toString()' 和 'super::toString' 使用合成访问器方法?

java - 我需要有关我用 JAVA 编写的程序的帮助(空指针异常)

java - 无法再从 oracle 站点 curl JDK

java - 使用 Apache Tika 提取元数据并存储到 HashMap 中

c++ - 虚继承中direct base是如何构造的?

python - 属性错误:类型对象 'Ned' 没有属性 'attack' ?