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 ");
}
}