A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dugubaitian 中级黑马   /  2014-6-12 10:43  /  944 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 dugubaitian 于 2014-6-12 23:39 编辑

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

2 个回复

倒序浏览
让子类重写,在调用方法的时候,就可以按实际new时的类型来调用相应的方法了。
回复 使用道具 举报
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
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马