1. 当类中的方法声明前加上了virtual修饰符,称之为虚方法,反之为非虚;
2. 对于虚方法,无论被其所在类的实例调用,还是被这个类的派生类的实例调用,方法的执行方式不变;
3.举例子:
using System;
class A
{
public void F()
{
Console.WriteLine("A.F");
}
public virtual void G()
{
Console.WriteLine("A.G");
}
}
class B:A
{
new public void F()
{
Console.WriteLine("B.F"):
}
public override void G()
{
Console.WriteLine("B.G"):
}
}
class Test
{
B b = new B();
A a=b;
a.F();
b.F();
a.G();
b.G();
}
}
4. A类提供了两个方法:非虚的F和虚方法G。类B则提供了一个新的非虚的方法F,从而覆盖了继承的F;类B同时还重载了继承的方法G。
5. 输出结果:
A.F
B.F
B.G
B.G
|