using System;
class a
{
public virtual void fun()
{
Console.WriteLine("a");
}
}
class b:a
{
public virtual void fun()
{
Console.WriteLine("b");
}
}
class c:b
{
public override void fun()
{
Console.WriteLine("c");
}
static void Main()
{
a aa=new c();
b bb=new c();
aa.fun();
bb.fun();
}
}
结果
a
c结果想不通
class a
{
public virtual void fun()
{
Console.WriteLine("a");
}
}
class b:a
{
public virtual void fun()
{
Console.WriteLine("b");
}
}
class c:b
{
public override void fun()
{
Console.WriteLine("c");
}
static void Main()
{
a aa=new c();
b bb=new c();
aa.fun();
bb.fun();
}
}
结果
a
c结果想不通
b bb=new c();
bb.fun(); 若要输出c,只要把b.fun()同样声明为override即可
主要问题是aa这个对象调用fun的时候为什么是调用的a类的而不是C类的