Java SuperClass重写子类变量



我有一个项目,该项目涉及创建不同类型的对象,这些对象继承超类中的方法和变量,但当我尝试将子类中的变量更改为通过构造函数输入的值时,变量保持与超类中初始化的值相同。

这是超级制造的变量之一:

public int grade = 0;

这就是子类中发生的情况(newGrade通过构造函数来实现)。

System.out.println(newGrade);
newGrade = grade;
System.out.println(grade);

输出显示newGrade=1(或选择任何选项),但grade=0

我不确定这是一件简单的事情还是我忽略了的事情,但我很感激任何提示。

从右到左分配。所以你在这里要做的是打印出newGrade(它是1)然后将其指定为0的CCD_ 2,然后打印出仍然为0的CCD_。

这里有几个问题:

public int grade = 0;

这是麻烦。java准则规定您应该使用private变量(或者如果可能的话,根本不使用实例变量)。通过这种方式,您无法确保团队中的其他(可能是粗心的)程序员不会篡改grade

newGrade = grade;

由于只有引用的副本被传递给方法/构造函数,所以如果您试图重新分配它们的值,这是有问题的。它不会反射到原始对象。

相关内容

  • 没有找到相关文章

最新更新