我是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?
}
}
答案 0 :(得分:0)
Atm_1
继承了TotalBalance
的属性Atm()
,构造函数DepoSit(int deposit)
和方法Atm
,但未继承您设置为new Atm();
的数据。
Atm_1
和Atm
是同一类的两个不同实例。尝试将对象Amt_1
和Amt
可视化为变量,设置一个变量数据不会更改其他数据。
答案 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;
}
}