子类继承和mutators /访问器的交互

时间:2015-10-21 16:55:58

标签: java inheritance override mutators

我有一个关于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;
    }
}

我从主

调用Child1
class test extends Pay
{

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

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

1 个答案:

答案 0 :(得分:0)

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