我以爲我知道關鍵字的總體思路,但試圖讓我的頭如何適用於下面的代碼。無論我使用override/virtual還是不使用GetTotal方法,我都會得到相同的值。瞭解虛擬/覆蓋
這是怎麼回事?重寫/虛擬甚至適用於此,因爲他們似乎沒有做任何事情。
namespace ConsoleApplication1
{
class ChaseAccount : BankAccount
{
public override int GetTotal()
{
return Total * 1000;
}
}
class BankAccount
{
public int Total { get; set; }
public virtual int GetTotal()
{
return Total * 100;
}
public BankAccount Deposit(int n)
{
this.Total += n;
return this;
}
}
class Program
{
static void Main(string[] args)
{
// BankAccount
BankAccount ba = new BankAccount();
ba.Deposit(1000);
Console.WriteLine(ba.GetTotal());
Console.WriteLine("\n\n");
// Chase
ChaseAccount ca = new ChaseAccount();
ca.Deposit(1000);
Console.WriteLine(ca.GetTotal());
Console.ReadLine();
}
}
}
Downvote - 繼承的readup。你的覆蓋代碼和你的基類中的虛擬代碼一樣。當然,你會得到相同的結果。虛擬應該給你一個(可能的)基礎實現,並且覆蓋應該擴展或覆蓋它。 – 2015-02-11 18:49:58
我修改了我的問題。感謝大家好心告訴我更新我的帖子。 – SaltProgrammer 2015-02-11 18:50:23
你仍然看到該代碼的行爲? – BradleyDotNET 2015-02-11 18:55:50