Java扩展不更新
我目前正在从事一个hibernate项目(EJB和JSF),我有多个java类。使用JSF在前端更改父类的数据,但在子类中不进行更新。我需要访问子类中的数据来进行一些计算。关于如何将变量的值从父类传递到子类,有什么想法吗 提前谢谢 例如: 父类Java扩展不更新,java,oop,Java,Oop,我目前正在从事一个hibernate项目(EJB和JSF),我有多个java类。使用JSF在前端更改父类的数据,但在子类中不进行更新。我需要访问子类中的数据来进行一些计算。关于如何将变量的值从父类传递到子类,有什么想法吗 提前谢谢 例如: 父类 public class parent { private String x = "a+"; public String getx(){ return x; } public void setx
public class parent {
private String x = "a+";
public String getx(){
return x;
}
public void setx(String x){
this.x = x;
}
}
儿童班
public class child extends parent{
private String z;
public String getZ(){
System.out.print(getx());
return z;
}
}
主类
public static void main(String[] args) {
parent p = new parent();
System.out.println("Original" + p.getx());
p.setx("z");
System.out.println(" Add z" +p.getx());
child c = new child();
System.out.println("child getx" +c.getx());
p.setx("zZ");
System.out.println("child getz" +c.getZ());
}
}
结果。
原版a+
加z
儿童getx a+
a+child getz null我不明白你在这里期望什么。一切正常
在您的示例中,您从未调用
c.setX
,那么为什么您希望它打印除a+
之外的任何内容呢p
指的是一个完全不同的对象,与c
无关。因此,调用p.setx
对c
没有影响。如果要设置c.x
,只需调用c.setx(“z”)
。对于多态性,由于child
扩展了parent
,您可以在child
的实例上调用parent
中声明的方法。您正在两个不同的对象c
和p
上设置“z”。为了让“c.getZ()
返回zZ
,您需要调用c.setx(“zZ”)
请共享相关代码。你所描述的不可能发生。你的错误一定是别的。@jahroy,这是不正确的。代码准确地显示了OP做错了什么。@SimonC:jahroy在24分钟前提交了该评论;OP在8分钟前才发布了代码。即使如此,jahroy也是正确的:OP所描述的并没有实际发生,但他并没有做他所描述的。感谢您的快速回复,在我正在开发的应用程序中,前端正在与“家长”交互。我需要从“child”中获取更新的值。当我从child调用getx时,它返回的是“a+”而不是更新的value@user1817081-你误解了继承的概念。仅仅因为C类扩展了P类,这并不意味着C的每个实例都会在P的任何实例更新时更新(谢天谢地)。好的,我可以通过在父静态中创建变量来获得我想要做的事情,这样我就可以从main访问它。谢谢