gpt4 book ai didi

Java SuperClass 重写子类变量

转载 作者:行者123 更新时间:2023-12-01 08:07:32 25 4
gpt4 key购买 nike

我有一个项目,涉及创建不同类型的对象,这些对象从父类(super class)继承方法和变量,但是当我尝试更改子类中的变量(更改为通过构造函数输入的值)时,变量保持相同的值它在父类(super class)中被初始化。

这是 super 变量之一:

public int grade = 0;

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

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

输出显示 newGrade = 1(或选择的任何内容),但 Grade = 0

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

最佳答案

您从右向左分配。所以你在这里要做的就是打印出 newGrade (即 1)然后将其分配为 0 的 grade,然后打印出仍为 0 的 grade

这里有几个问题:

public int grade = 0;

这可真是麻烦了。 java 指南规定您应该使用私有(private)变量(或者如果可能的话根本不使用实例变量)。这样您就无法确保团队中的其他(可能是粗心的)程序员不会篡改等级

newGrade = grade;

由于只有引用的副本被传递给方法/构造函数,因此如果您尝试重新分配它们的值就会出现问题。它不会反射(reflect)到原始对象。

关于Java SuperClass 重写子类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com