黑马程序员技术交流社区

标题: c#中的 虚方法! [打印本页]

作者: dugubaitian    时间: 2014-6-12 10:43
标题: c#中的 虚方法!
本帖最后由 dugubaitian 于 2014-6-12 23:39 编辑

关于c#中的虚方法的应用!


作者: 师弟    时间: 2014-6-12 13:55
让子类重写,在调用方法的时候,就可以按实际new时的类型来调用相应的方法了。
作者: 许庭洲    时间: 2014-6-12 20:46
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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2