我以为我知道关键字的总体思路,但试图让我的头如何适用于下面的代码。无论我使用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