Java SuperClass超过编写子类变量

 潇潇沐林风_921 发布于 2023-02-13 19:07
  • int
  • 我有一个涉及创建从超类继承方法和变量的不同类型的对象的项目,但是当我尝试更改子类中的变量(通过构造函数输入的值)时,变量保持与初始化的值相同在超级班.

    这是超级变量之一:

    public int grade = 0;
    

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

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

    输出显示newGrade = 1(或任何选定的)但等级= 0

    我不确定它是否简单或我忽略了什么,但我会感激任何提示.

    1 个回答
    • 您从右到左分配.所以你在这里做的是打印出来newGrade(这是1)然后分配它grade是0然后你打印出来grade仍然是0.

      这里有几个问题:

      public int grade = 0;
      

      这很麻烦.java指南声明你应该使用private变量(如果可能的话,根本不使用实例变量).这样你就无法确保团队中的其他(可能是粗心的)程序员不会篡改grade.

      newGrade = grade;
      

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

      2023-02-13 19:10 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有