首页 > 代码库 > 虚方法和覆写方法
虚方法和覆写方法
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++里面的虚函数效果是一样的!也就是所谓的多态性!
虚方法和覆写方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。