方法隐藏
在派生类中定义一个与基类方法同名的方法,并不会引发错误,而是派生类中的方法隐藏了基类中的同名方法。实际上,我们常常不希望隐藏方法,因为隐藏方法后,可能导致出现不期望的结果。如下面:语句MyClass c2 = new MySubClass()创建了一个MySubClass类的实例,但是使用c2.Hello()输出的却是“Hello,MyClass!”,而不是“Hello, MySubClass!”
using System;
namespace ffyincang
{
class Class1
{
[STAThread]
static void
{
MyClass c1 = new MyClass();
MyClass c2 = new MySubClass();
MySubClass c3 = new MySubClass();
Console.WriteLine(c1.Hello ());//这里输出为 Hello, MyClass!
Console.WriteLine(c2.Hello());//这里输出为Hello, MyClass!
Console.WriteLine(c3.Hello());//这里输出为 Hello, MySubClass!是因为子类中的方法隐藏了基类中的同名方法
}
}
class MyClass
{
public string Hello()
{
return "Hello, MyClass!";
}
}
class MySubClass : MyClass //这里指的是继承了类MyClass
{
public string Hello()
{
return "Hello, MySubClass!";
}
}
}