我在一个庞大的代码库上工作,它有一个巨大的类,其中包含许多私有(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/