无法弄清楚为什么价值没有变化

时间:2017-08-02 21:35:16

标签: c# inheritance encapsulation

我是OOP和C#的新手。

我试图使用继承和封装概念而陷入困境。

无法确定存款方法在我通过Atm_1课程调用时的原因。

父类

  class Atm
  {

    public int TotalBalance { get; private set; } = 1000;

    public Atm() { }

    public void DepoSit(int deposit)  { TotalBalance += deposit; }  

  }

子课程

  class Atm_1:Atm 
  {

  }

 class Program
 {

    static void Main()
    {


        var atm = new Atm();
        var atm_1 = new Atm_1();

       //Before Deposit 
        Console.WriteLine("Total Balance is "+atm.TotalBalance);     //1000

        //Deposit
        atm_1.DepoSit(20);

        //After Deposit
        Console.WriteLine("Total Balance is " + atm.TotalBalance);   //Still 1000 ??



        atm.DepoSit(500);
        Console.WriteLine("Total Balance is " + atm.TotalBalance);   //Now 1500
        //This Works -why the above didn't work?  

    }
}

2 个答案:

答案 0 :(得分:0)

Atm_1继承了TotalBalance的属性Atm(),构造函数DepoSit(int deposit)和方法Atm,但未继承您设置为new Atm();的数据。

Atm_1Atm是同一类的两个不同实例。尝试将对象Amt_1Amt可视化为变量,设置一个变量数据不会更改其他数据。

答案 1 :(得分:0)

  
    

来自 Peter Dunniho 评论,我可以弄清楚我需要做的是创建一个数组。感谢所有评论和答案:)

  
class Program
{
    static void Main(string[] args)
    {

        Atm[] atm = new Atm[3];

        atm[0] = new Atm(50);
        atm[1] = new Atm(100000);
        atm[2] = new Atm(25);

        int totalBalance=0;

       for( int i=0;i<atm.Length;i++)
        {
            totalBalance += atm[i].Balance;
        }

        Console.WriteLine("TotalBalance is "+totalBalance.ToString("c"));


        Console.ReadKey();


    }
}



class Atm
{
    public int Balance { get; private set; }

    public Atm(int balance)
    {
         Balance=balance;
    }

}