脆弱な基底クラスの問題を理解しており、継承上の合成またはスーパークラスでのプライベートメソッドの宣言を使用して解くことができます。 今、ヘルパーメソッドを使ってこの問題を解決する方法を理解しようとしています。そのため、脆弱な基本クラスの古典的なコードを入れて、ヘルパーメソッドを使って解決します。ヘルパーメソッドで脆弱な基底クラスを解決するには
これは(ウィキペディアより)壊れやすい基本クラスのコード
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
によって呼び出される2つのプライベートヘルパーメソッドを入れていますpublic class A {
protected int i;
public void inc1(){
inc1Helper();
}
public void inc2(){
inc2Helper();
}
private void inc1Helper(){
i++;
}
private void inc2Helper(){
inc1Helper();
}
}
私のコンパイラでは、ヘルパーメソッドを使って脆弱な基底クラスを解くのに最適な解決策であるかどうかは私には分かりませんでした。注意していただきありがとうございます。