using System;
namespace NewExample
{
class A
{
public void Method()
{
Console.WriteLine("A.Method");
}
}
class B : A
{
public new void Method()
{
Console.WriteLine("B.Method");
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
B b = new B();
A c = b;
a.Method();
b.Method();
c.Method();
//按回车键结束
Console.ReadLine();
}
}
}
输出结果:
A.Method
B.Method
A.Method
例子中先建立了A类的对象a,因此可以直接调用Method方法,并输出相关的字符串。
b对象声明为B类型,当调用b的Method方法时,实际上是调用定义在B类中的方法。
c对象声明为A类型,却初始化为B类的对象。当调用c的Method方法时,由于c对象声明为A类型,因此c便被视为A类型的对象,调用的将是A类中的Method方法。