2017-08-02 94 views
-3

我是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? 

    } 
} 
+4

为什么代码做它做什么这是从代码清晰。但不明白为什么你会认为会发生任何不同的事情。为什么你创建两个不同的对象?你为什么认为一个对象('atm_1')的改变会影响另一个对象('atm')?继承关于_type_,而不是实例,并且修改继承了不同实例类型的类型的一个实例不会对该不同实例产生任何影响。 –

+0

我想创建atm_2,3,4等。我不想在TotalBalance –

+2

中存储所有atm的组合值。我建议查看OOP的基本概念。特别是你似乎需要理解一个类的实例是什么。 – Steve

回答

0

Atm_1继承的财产TotalBalance,构造Atm(),和Atm方法DepoSit(int deposit),而不是你设置为new Atm();数据。

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

0

彼得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; 
    } 

} 
相关问题