1

基本クラスと派生クラス、および別の外部クラスがあります。基本クラスの値を外部クラスから更新し、派生クラスからアクセスしようとしています。

私のクラス構造は以下のようなものです:

class B:{

bool flag;

setFlag(bool value){
flag = value;
}
printFlag(){
print flag;
}

ExternalClass e = new ExternalClass(this);
}

class External {
B b = null;
External( B b){
this.b = b;
}
b.setFlag(true);

}

Class Derived : extends B{

printFlag();
}

ここではフラグを true に設定していますが、print メソッドは false を出力します。何が起こっているのか、私には手がかりがありません。親切に私を助けてください。

説明画像

4

1 に答える 1

1

ここにあなたが望むことをするいくつかのコードがあります:

class Derived extends B{
    public Derived(){
        super(); 
        // this is the important bit, by calling super() you call the parent classes
        // constructor, which in this case changes the attribute "flag"
        // by using the constructor of the external class on the class
    }
}

class B {
    boolean flag;
    ExternalClass e;

    public B(){
        e = new ExternalClass(this);
    }

    public void setFlag(boolean value) {
        flag = value;
    }

    public void printFlag() {
        System.out.println(flag);
    }

}

class ExternalClass {

    B b = null;

    public ExternalClass(B b) {
        this.b = b;
        b.setFlag (true);
    }
}
于 2012-07-13T16:00:14.827 に答える