public class A
{
public A()
{
Console.WriteLine("A");
}
public virtual void GetName()
{
Console.WriteLine("AName");
}
public virtual void GetAge()
{
Console.WriteLine("A17");
}
}
public class B:A
{
public B()
{
Console.WriteLine("B");
}
public override void GetName()
{
Console.WriteLine("BName");
}
public new void GetAge()
{
Console.WriteLine("B17");
}
}
class Program
{
static void Main(string[] args)
{
A a = new B();
a.GetName();
a.GetAge();
Console.ReadKey();
}
}
输出结果
A
B
BName
A17
a.GetName(),由于GetName()方法在B类中被重写,所以输出的是BName,
a.GetAge(),调用的是A类下的GetAge()方法,输出A17,因为它并没有被重写,只是在B类中被new了一下,new修饰符可以显式的隐藏从基类继承的成员,在这里需要调用B类下的GetAge()方法才会输出B17。