Java 防止抽象实现重写某些方法
我有一个名为Java 防止抽象实现重写某些方法,java,oop,Java,Oop,我有一个名为Worker的界面,我想公开该界面,以便最终用户只需调用: Worker w = WorkerFactory.createInstance(); w.mainBit(); 如何防止扩展我的AbstractWorker类的类提供自己的mainBit方法实现 这就是我目前的结构: interface Worker { void mainBit(); } class WorkerFactory { public static Worker createInstance(
Worker
的界面,我想公开该界面,以便最终用户只需调用:
Worker w = WorkerFactory.createInstance();
w.mainBit();
如何防止扩展我的AbstractWorker
类的类提供自己的mainBit
方法实现
这就是我目前的结构:
interface Worker {
void mainBit();
}
class WorkerFactory {
public static Worker createInstance() {
return new WorkerImpl();
}
}
abstract class AbstractWorker implements Worker {
@Override
public void mainBit() {
this.doThing1();
this.doThing2();
}
public abstract void doThing1();
public abstract void doThing2();
}
class WorkerImpl extends AbstractWorker {
@Override
public void doThing1() {
}
@Override
public void doThing2() {
}
@Override
public void mainBit() {
// I don't want classes to override this functionality
}
}
您可以通过使方法
成为final
来实现这一点 您可以通过将方法设置为final 使用final关键字
public final void mainbit ()
...
使用最后一个关键字
public final void mainbit ()
...
如果您希望始终使用AbstractWorker的mainBit,请在这个类中将其设为final。这样子类就不会覆盖它。如果您想始终使用AbstractWorker的mainBit,请在这个类中将其设为final。这样子类就不会重写它。将该方法标记为
final
,这样可以防止重写:
public final void mainBit()
将方法标记为
final
,以防止覆盖:
public final void mainBit()
在抽象类(Java)中标记它
final
。不允许其他子类重写它。在抽象类(Java)中标记它final
。不允许其他子类重写它