知识大全 认识.NET中的虚函数[1]

Posted 函数

篇首语:只要学不死,就往死里学。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 认识.NET中的虚函数[1]相关的知识,希望对你有一定的参考价值。

认识.NET中的虚函数[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  面向对象的程序设计有三大要素 封装 继承和多态 虚函数是多态的重要组成部分 同时又在类的继承关系中有着很多变化 本文讨论 NET中对虚函数的支持

  首先 我们通过一个例子来看看虚函数的普通用法

class CA     public virtual void Foo()       Console WriteLine( CA Foo );          class CB : CA     public override void Foo()       Console WriteLine( CB Foo );      class Test     public static void InvokeFoo(CA ca)        ca Foo();        public static void Main()        InvokeFoo(new CB());    

  输出结果

  CB Foo

  在这个例子中 尽管在调用InvokeFoo()的时候 CB被转换成CA 但是当执行ca Foo的时候 仍然调用了CB的Foo 因为ca此时指向的是一个CB类型的对象 这种调用模式 我们称之为运行时绑定 因为在编译InvokeFoo时 编译器无法获取参数ca的真实类型 只有在运行的时候 才能根据ca的真实类型 决定调用哪一个函数

  在这个例子中 两个关键字值得我们注意 首先是virtual 他告诉编译器 当前函数需要运行时绑定 其次是override 他告诉编译器 我要覆蓋基类中的Foo()

  看到这里 可能读者会对两个问题持有疑惑

  [问题]: 不用virtual结果如何?

  [问题]: 不用override结果如何?

  读者不妨自己动手修改上例 尝试这两个关键字的不同组合 看看输出的结果如何 在这里 我仅给出组合条件和其输出结果

  序号 基类 (CA)中是否有virtual 子类 (CB)中是否有override      输出            是            是          CB Foo            是            否          CA Foo            否            是          编译错误             否            否          CA Foo

  我希望通过对这组实验结果的解释 交待一些 NET中虚函数的相关概念

cha138/Article/program/net/201311/14950

相关参考

知识大全 认识.NET中的虚函数[3]

认识.NET中的虚函数[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  [问题]:CA实现I

知识大全 认识.NET中的虚函数[2]

认识.NET中的虚函数[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  运行时绑定仅体现在虚

知识大全 如何在Delphi中调用.Net编写的DLL中的函数

如何在Delphi中调用.Net编写的DLL中的函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 C#区别和认识四个判等函数

C#区别和认识四个判等函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Net有四个判等函数?

知识大全 认识OracleSQL内置函数

认识OracleSQL内置函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL中的单记录函

知识大全 .Net图片处理函数

.Net图片处理函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Arti

知识大全 实例讲解.NET多线程执行函数

实例讲解.NET多线程执行函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这里为什么会出现多

知识大全 ASP.NET中如何使用匿名函数

ASP.NET中如何使用匿名函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  尝试从缓存中获取

知识大全 c#.net常用函数列表

DateTime数字型 SystemDateTimecurrentTime=newSystemDateTime();  取当前年月日时分秒  currentTime=SystemDateTimeNow

知识大全 ASP.NET文件下载函数使用浅析

ASP.NET文件下载函数使用浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET文