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语句或实现"方法析构函数".
有没有办法实现这个目标?
我可能会在定义非抽象方法做Foo的,我会打电话的抽象方法bar和closingMethod(),如
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)