Java扩展不更新

时间:2012-12-06 04:18:28

标签: java oop

我目前正在开发一个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 z

孩子getx a +

a + child getz null

2 个答案:

答案 0 :(得分:2)

我不明白你的期望。一切都很好。

在您的示例中,您从不致电c.setX,那么为什么您希望它能打印除a+以外的任何内容? p指的是完全不同的对象,与c无关。因此,调用p.setxc无效。如果您想设置c.x,请致电c.setx("z")。执行多态,因为child扩展parent,您可以在parent的实例上调用child中声明的方法。

答案 1 :(得分:1)

您在两个不同的对象cp上设置了'z'。要让“c.getZ()返回zZ,您需要致电c.setx("zZ")