我有一个名为Module的类,其中有一个方法onEnable();
现在,我有一个名为Config的类,并希望使onEnable();方法为private,因为有一个预定义的动作,并且不应允许扩展Config的类更改其行为。

有什么办法吗?



class Module{

     public void onEnable(){

     }
}


一个允许使用onEnable的类扩展模块:

class HelloWorldModule{

     @Override
     public void onEnable(){

          System.out.println("Hello, World!");

     }


}


现在配置类,我希望onEnable是私有的,因此扩展Config的类不能!覆盖onEnable

class Config{

    @Override
    private void onEnable(){
    }


}


因此,现在,扩展了ProgrammConfig的名为Config的类无法覆盖onEnable

但是,这不起作用,因为您不能将public方法覆盖为private方法。

最佳答案

通过将方法声明为public,您是说应该可以在此类的每个实例(包括子类)上调用该方法。在子类中将方法声明为private没有意义,因此是不允许的。

现在,如果您担心子类会覆盖方法,则可以将方法声明为final来防止这种情况:

class Config extends Module{

    @Override
    public final void onEnable(){}
        //Whatever
    }

09-11 16:14