标签:style blog http io ar color sp on div
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace nange_1 { class A { public void f() { Console.WriteLine("在基类中"); } } class B : A { public void f() { Console.WriteLine("在子类中"); } } class Program { static void Main(string[] args) { B objB = new B(); A objA = objB;//基类指向派生类对象 objA.f(); //但是仍然调用的是基类的方法! Console.ReadLine(); } } }
输出结果如图所示:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace nange_1 { class A { virtual public void f() {Console.WriteLine("在基类中"); } } class B:A { override public void f() { Console.WriteLine("在子类中"); } } class Program { static void Main(string[] args) { B objB=new B(); A objA = new A(); objA.f(); //基类调用自己的方法 objA = (A)objB;//加不加(A)都一样的!基类引用指向派生类对象 objA.f();//此时调用的派生类的方法!和上面的完全不一样的! objB.f(); Console.ReadLine(); } } }
/*关于virtual和override修饰符的重要信息如下: 覆写和被覆写的方法必须要有相同的可访问性! 不能复写static方法和非虚方法。 方法,属性,索引器,以及另一种成员类型事件(都可以被声明为virtual和override)*/
总结:这个和c++里面的虚函数效果是一样的!也就是所谓的多态性!
标签:style blog http io ar color sp on div
原文地址:http://www.cnblogs.com/leijiangtao/p/4129199.html