Java超类重写子类变量

奇洛

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

这是超级变量产生的变量之一:

public int grade = 0;

这就是子类中发生的事情(newGrade通过构造函数生成)。

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

输出显示newGrade = 1(或所选的任何值),但grade = 0

我不确定它是简单还是我忽略了,但是我会感激任何提示。

亚当·阿罗德(Adam Arold)

您从右到左分配。因此,您在此处执行的操作是打印输出newGrade(为1),然后将其分配grade为0,然后打印出grade仍为0。

这里有几个问题:

public int grade = 0;

麻烦了 Java准则规定您应该使用private变量(或尽可能不使用任何实例变量)。这样,您就无法确保团队中的其他(可能是粗心的)程序员不会篡改grade

newGrade = grade;

由于仅将引用的副本传递给方法/构造函数,因此如果您尝试重新分配它们的值,则会出现问题。它不会反映到原始对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章