强制抽象方法执行预定义代码 - 类似于重载的return语句

Ein*_*ren 3 java inheritance abstract-class

我有一个抽象方法的抽象类

 public abstract class Foo{
    public int bar();
}
Run Code Online (Sandbox Code Playgroud)

这是由普通类使用某些方法继承和实现的.

public class ConcreteFoo1 extends AbstractFoo{
    public void bar(){
    method1();
    method2();
    closingMethod();
    return 1;
Run Code Online (Sandbox Code Playgroud)

}}

public class ConcreteFoo2 extends AbstractFoo{
public void bar(){
    method3();
    method4();
    closingMethod();
    return 2;
Run Code Online (Sandbox Code Playgroud)

}}

正如你所看到的那样,两个类都结束了closingMethod();.结束bar()使用相同行的已实现方法对我所使用的框架至关重要.有没有办法通过父类强制执行.缺少更好的单词使其成为"半抽象",其中前n行在子类中定义,而结束行由父类定义.理想情况下,我想重载return语句或实现"方法析构函数".

有没有办法实现这个目标?

rad*_*doh 7

我可能会在定义非抽象方法做Foo的,我会打电话的抽象方法barclosingMethod(),如

public abstract class Foo {
    public void foo() {
        bar();
        closingMethod();
    }
    public abstract void bar();
}
Run Code Online (Sandbox Code Playgroud)

OP编辑后的更新:

事实上,这会使事情变得复杂,但是你可能会做一些事情

public abstract class Foo {
    public int foo() {
        bar();
        closingMethod();
        return baz();
    }
    protected abstract void bar();
    protected abstract int baz();
}
Run Code Online (Sandbox Code Playgroud)