【发布时间】:2017-07-30 17:52:47
【问题描述】:
我已经了解了脆弱的基类问题,并且我知道我们可以使用组合而不是继承或在超类中声明私有方法来解决它。 现在我正在尝试了解如何使用辅助方法解决这个问题,所以我将放置脆弱基类的经典代码,然后我将使用辅助方法放置我的解决方案,如果我做错了请告诉我。
这是一个脆弱基类的代码(来自维基百科)
public class JavaApplicationProvaHello {
public class A {
private int i;
public void inc1(){
i++;
}
public void inc2(){
inc1();
}
}
//---------------------------
public class B extends A{
@Override
public void inc1(){
inc2();
}
}
//------------------------
public class Test{
public static void main(String[] args) {
B b = new B();
b.inc1();
}
}
}
现在我更改类 A 并放置两个私有辅助方法,它们将由公共方法 inc1 和 inc2 调用
public class A {
protected int i;
public void inc1(){
inc1Helper();
}
public void inc2(){
inc2Helper();
}
private void inc1Helper(){
i++;
}
private void inc2Helper(){
inc1Helper();
}
}
在我的编译器中一切正常,我问自己这是否是使用辅助方法解决脆弱基类的最佳解决方案。感谢您的关注。
【问题讨论】: