我有一个 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/