【问题标题】:Interactions of subclasses inheritance and mutators/accessors子类继承和修改器/访问器的交互
【发布时间】:2015-10-21 16:55:57
【问题描述】:

我有一个关于 Java 中的继承的问题,我有 3 个类,Parent Child1 和 Child2。 Child1 和 Child2 都是父方法的子类。

Class Parent
{
   private int money;
   public void setMoney(int a)
   {
    money = a;
   }

   public int getMoney()
   {
   return money;
   }
    public int calculate()
    {
        int x;
        x = getMoney +100;

    }
}

 

Child1 将接受来自用户的值并使用父类的 setMoney 方法

 

import java.io.*;
import java.util.*;
Class Child1 extends Parent
{
   public void displayinfo()
   {
       int a;
       Scanner in = new Scanner(System.in);
       Child2 roll = new Child2();
       a = in.nextInt();
       super.setMoney(a);
       System.out.println(super.calculate());
       System.out.println(roll.calculate());
   }
}

我的问题是 Child2 如何能够访问 child1 的输入值? 我希望我的孩子 2 向超类添加一个额外的操作,但我从 child2 得到 0,就好像这些值一开始没有被初始化一样

class Child2 extends Parent
{
    public int calculate()
    {
        int y = super.calculate() + 100
        return y;
    }
}

我正在从 main 调用 Child1

class test extends Pay
{

    public static void main(String arg[]) 
    {
    Child1 a = new Child1();
    a.displayinfo();
    }
  }

编辑:复制意大利面是真实的

【问题讨论】:

  • 我们可以看看你的主课还是你的测试课?你在哪里初始化你的子类并调用你的方法?
  • 先返回你的计算然后检查
  • 我注意到我的脚本中的错误并修复了它,但实际代码是这样的,2个子类,1个子类进行计算,另一个将接受输入并通过计算调用另一个子类但是如果计算子类返回值 0

标签: java inheritance overriding mutators


【解决方案1】:

这里的问题是您有两个不共享任何状态的实例。因此,尽管它们都是 Parent 的子类,但每个实例对于字段 money 都有自己的值。当Child1 类型的实例调用super.setMoney(a) 时,它会更新自己的内部状态。 Child2 类型的对象仍然有自己的状态,只有调用 roll.setMoney(a) 才会改变。

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 1970-01-01
    • 2023-04-09
    • 2014-03-15
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多