bra*_*n56 15 java methods inheritance
是否可以定义类似的类
public class MyClass
{
public void methodA(){} // Inherit
public void methodB(){} // Inherit
public void methodC(){} // Require override
}
Run Code Online (Sandbox Code Playgroud)
然后让所有从MyClass扩展的类被要求覆盖methodC()
但只是简单地继承methodA()
和methodB()
?
如果有可能,那怎么做呢?如果不可能,您能否提出替代解决方案以获得类似的结果?
编辑:
我需要一个非抽象类,因为我希望能够实例化这个类.
EJK*_*EJK 14
您必须使您的基类抽象化.
public abstract class MyClass
{
public void methodA(){} // Inherit
public void methodB(){} // Inherit
public abstract void methodC(); // Require override
}
Run Code Online (Sandbox Code Playgroud)
您不能要求覆盖非抽象方法.
也许你可以做类似于模板方法模式的事情:
public final void methodC() { methodC1(); someMoreLogic(); methodC2();}
protected abstract void methodC1();
protected abstract void methodC2();
Run Code Online (Sandbox Code Playgroud)
这里methodC封装了一个固定的算法,该算法调用必须由子类提供的片段.