Java 从外部类修改基类中的内容并从派生类访问它
我有一个基类、一个派生类和另一个外部类。 我尝试从外部类更新基类中的值,然后 从派生类访问它 我的班级结构如下:Java 从外部类修改基类中的内容并从派生类访问它,java,class,inheritance,null,Java,Class,Inheritance,Null,我有一个基类、一个派生类和另一个外部类。 我尝试从外部类更新基类中的值,然后 从派生类访问它 我的班级结构如下: 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; }
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。
我不知道发生了什么事。请帮帮我
以下是一些代码,可以满足您的要求:
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);
}
}
下面是一些代码,可以实现您的愿望:
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);
}
}
如果您向您展示实际的代码(最好是最小但可编译的代码),这将非常有用。也许你只有一行代码,比如
flag=flag代码>。发布一个演示您的问题的示例将帮助您获得更好的答案。在您的示例中没有将任何变量设置为true。assylias:我已经编辑过它:在外部类中将标志设置为true。“Base”类中的属性对于“Base”类的所有实例都应该相同吗?在这种情况下,你可以使用“static”关键字。任何其他类都可以修改我的i use static值。如果您向您展示实际代码(最好是最小但可编译的代码),这将非常有用。也许你只有一行代码,比如flag=flag代码>。发布一个演示您的问题的示例将帮助您获得更好的答案。在您的示例中没有将任何变量设置为true。assylias:我已经编辑过它:在外部类中将标志设置为true。“Base”类中的属性对于“Base”类的所有实例都应该相同吗?在这种情况下,你可以使用“static”关键字。任何其他类都可以修改我使用static的值。