日期:2014-05-20  浏览次数:20876 次

virtual 的作用
public   class   A
        {
                public   virtual   void   fun()
                {
                        Console.WriteLine( "A   ok ");
                }
        }

        public   class   B   :   A
        {
                public   void   fun()
                {
                        Console.WriteLine( "B   ok ");
                }
        }

把类B里的fun()注释编译也会通过,是不是现在类A里的fun()前有没有virtual都是一样啊?

------解决方案--------------------
实现多态性
------解决方案--------------------
实现多态性,对,在类A里的fun()前有没有virtual都是一样

------解决方案--------------------
编译可以通过,但是你仔细观察一下,多了一个警告,这里正确的写法应该是
public class B : A
{
public override void fun()
{
Console.WriteLine( "B ok ");
}
}

如果没有virtual关键字的话,要在子类覆盖基类的方法,需要用new关键字,如下:
public class A
{
public void fun()
{
Console.WriteLine( "A ok ");
}
}

public class B : A
{
public new void fun()
{
Console.WriteLine( "B ok ");
}
}