C#关于虚方法和重写的实例说明(virtual 和override)
来源:互联网 发布:阿里云对象oss怎么用 编辑:程序博客网 时间:2024/06/05 17:00
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleAppsTest{ class Program { static void Main(string[] args) { D d = new D(); A a = d; B b = d; C c = d; a.F(); b.F(); c.F(); d.F(); a.F1(); a.F2(); c.F1(); c.F2(); Console.ReadKey(); } } public class A { public virtual void F() { Console.WriteLine("A.F"); } public void F1() { Console.WriteLine("A.F1"); } public virtual void F2() { Console.WriteLine("A.F2"); } } public class B : A { public override void F() { Console.WriteLine("B.F"); } } public class C : B { new public virtual void F() { Console.WriteLine("C.F"); } new public void F1() { Console.WriteLine("C.F1"); } } public class D : C { public override void F() { Console.WriteLine("D.F"); } }}
执行结果如下:
说明:
就 类A 来说,其他类同:
A 是a 的声明类;D是实例类
在调用实例a的方法时,首先是在声明类A中找此方法,如果有此方法并且是非虚方法,就直接执行该方法;如果有此方法并且是虚方法,就在A的子类中找,如果在子类B中找到该方法的重写,就执行B中的重写方法;如果没有找到B中对该方法的重写,就执行A类的虚方法。注意:如果A a =new A();调用a的方法时,都执行A类自己的方法。
如果有子类new 一个方法时,就表示覆盖了基类的该方法,调用时就执行自己的new方法;
如果子类中没有该方法,调用基类的方法时,执行基类的方法。
- C#关于虚方法和重写的实例说明(virtual 和override)
- C#关于虚方法 virtual 和 override 重写 详解
- 关于C#的virtual,Override和new的坑
- c#中隐藏(new)和方法重写(override)和重写(overload)的区别
- C# virtual和override
- 【KK学习笔记】c# 虚方法 virtual 、 重写方法 override 、new 的使用与理解
- C# virtual、override和new的使用
- Delphi的OverRide、OverLoad和Virtual方法
- Delphi的OverRide、OverLoad和Virtual方法
- Delphi的OverRide、OverLoad和Virtual方法
- Delphi的OverRide、OverLoad和Virtual方法
- Delphi的OverRide、OverLoad和Virtual方法
- delphi的override、overload和virtual方法
- c#的重写(override)和重载(overload)
- c# 虚函数Virtual与重写override
- virtual方法和override方法
- C#里virtual和override
- C#下 子类继承父类的虚方法后 使用override重写父类方法 和 不使用override重写有什么区别?
- ajax跨域(基础域名相同)表单提交
- pandaboard ES学习之旅——4 Android源代码下载与编译
- android编写UI出现error: Error parsing XML: unbound prefix 的错误原因及解决方案
- SuperMap Deskpro .NET 6R (2012) SP1产品介绍
- C#调用C++Dll封装时遇到的一系列问题
- C#关于虚方法和重写的实例说明(virtual 和override)
- 为清华大学水利系写的校友会iPhone与Android客户端
- Android 开发常用代码
- 深入浅出SharePoint——日志功能失效了??
- event.keyCode用法及列表
- Linux fork()返回值说明
- 接上(SQL中遇到多条相同内容只取一条的最简单实现)多字段情况
- windows服务器密码更改
- bintalk简介