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
。不允许其他子类重写它