2017-08-02 92 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; 
    } 

} 
相關問題