在C#或其他面向对象语言中,重写、重载和隐藏的机制,是设计高可扩展性的面向对象程序的基础。
(1)重写和隐藏
重写(Override)是指子类用Override关键字重新实现定义在基类中的虚方法,并且在实际运行时根据对象类型来调用相应的方法。
隐藏则是指子类用new关键字重新实现定义在基类中的方法,但在实际运行时只能根据引用来调用相应的方法。
以下的代码说明了重写和隐藏的机制以及它们的区别:
public class Program
{
public static void Main(string[] args)
{
// 测试二者的功能
OverrideBase ob = new OverrideBase();
NewBase nb = new NewBase();
Console.WriteLine(ob.ToString() + ":" + ob.GetString());
Console.WriteLine(nb.ToString() + ":" + nb.GetString());
Console.WriteLine();
// 测试二者的区别
BaseClass obc = ob as BaseClass;
BaseClass nbc = nb as BaseClass;
Console.Wri