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 回答