Java扩展不更新

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

我目前正在从事一个hibernate项目(EJB和JSF),我有多个java类。使用JSF在前端更改父类的数据,但在子类中不进行更新。我需要访问子类中的数据来进行一些计算。关于如何将变量的值从父类传递到子类,有什么想法吗

提前谢谢

例如:

父类

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访问它。谢谢