码迷,mamicode.com
首页 > Windows程序 > 详细

C# 虚方法

时间:2014-11-29 22:51:04      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   color   os   使用   sp   java   

当方法被定义为virtual时,表明方法为虚方法。

虚方法的作用:提供子类重写(override)父类方法的权利。(java中所有方法默认为虚方法)

一个子类如果想改变父类中的非虚方法功能,可以使用new关键字隐藏父类方法。

声明类与实例类不同时(声明类是实例类父类)。

首先在声明类中查找当前方法,如果没找到,再到声明类的父类中去找直到找到为止。

找到后检查该方法是否为虚方法,如果为非虚方法立即调用。如果为虚方法,从实例类中开始找,找不到再在其父类中找,直到找到为止,找到后立即执行。

例: 

bubuko.com,布布扣
 1     public class A
 2     {
 3         public string GetUnvirtual()
 4         {
 5             return "A.Unvirtual";
 6         }
 7         public virtual string GetVirtual()
 8         {
 9             return "A.Virtual";
10         }
11     }
12 
13     public class B : A
14     {
15         new public string GetUnvirtual()
16         {
17             return "B.Unvirtual";
18         }
19         public override string GetVirtual()
20         {
21             return "B.Virtual";
22         }
23     }
24 
25     public class C : B
26     {
27         new public string GetUnvirtual()
28         {
29             return "C.Unvirtual";
30         }
31         public override string GetVirtual()
32         {
33             //return base.GetVirtual();
34             return "C.Virtual";
35         }
36     }
View Code

C c = new C();

A a = c;

a.GetUnvirtual(); 返回 "A.Unvirtual"

a.Getvirtual(); 返回 "C.Virtual"

 

  

C# 虚方法

标签:style   blog   http   ar   color   os   使用   sp   java   

原文地址:http://www.cnblogs.com/lizikang2013/p/4132051.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!