java - 覆盖访问私有(private)成员的公共(public)方法

标签 java inheritance

我在一个庞大的代码库上工作,它有一个巨大的类,其中包含许多私有(private)成员以及公共(public)和私有(private)方法。我想从这个基类创建一个派生类,它将具有所有相同的成员和方法,除了它的一个公共(public)方法将有一行注释。我该怎么做?

我想重写那个方法,但是那个方法访问基类的许多私有(private)成员。

下面是我想要做的事情的框架。

public class Base {
    private var1;
    private var2;

    public toBeOverriden(){
       processA(var1);
       processB(var1);
       processC(var1);  // needs to be commented
       processD(var2);
       processE(var2);
   }
}

理想情况下我想做 -

public class Derived extends Base{
    @Override
    public toBeOverriden(){
       processA(var1);
       processB(var1);
       processD(var2);
       processE(var2);
   }
}

这是不可能的,因为我无法访问基类的私有(private)变量。在不保护所有私有(private)成员的情况下,我能做些什么吗?请注意,将 processC() 重写为空不是一个选项,因为它可以被其他未重写的方法使用。

最佳答案

如果您有权访问基类,您可以首先创建一个执行您想要的操作的新方法,例如 correctedToBeOverridden()。然后从您的扩展类中覆盖 toBeOverridden() 并让它调用 correctedToBeOverridden()

correctedToBeOverridden(){
    processA(var1); 
    processB(var1); 
    processD(var2);
    processE(var2);
} 

@Override 
toBeOverridden() {
    correctedToBeOverridden();
} 

关于java - 覆盖访问私有(private)成员的公共(public)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45362751/

相关文章:

python - 如何在类参数中调用函数

java - 无法理解java断言机制

java - JaxB 编码通配符泛型扩展类

c# - 采用接口(interface)+抽象类的继承设计。好的做法?

java - 在 Strategy 设计模式中使用抽象类代替接口(interface)

java - 为什么我可以在没有 "throws"关键字的情况下声明一个函数?

java - 在Java中解析html页面后获取节点的样式信息(css)

JavaFX:如何实现自定义工具提示

java - 为什么 DOM Node.replaceChild() 方法在此用例中不起作用?

C++模板类继承