博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#的override、new、vitutal一例
阅读量:7119 次
发布时间:2019-06-28

本文共 1031 字,大约阅读时间需要 3 分钟。

1:  using System;
2:  class A
3:  {
4:      public virtual void Method()
5:      {
6:          Console.WriteLine("A.method");
7:      }
8:  }
9:   
10:  class B:A
11:  {
12:      public new virtual void Method()
13:      {
14:          Console.WriteLine("B.method");
15:      }
16:  }
17:   
18:   
19:  class C:B
20:  {
21:      public override void Method()
22:      {
23:          Console.WriteLine("C.Method");
24:      }
25:   
26:   
27:      public static void Main()
28:      {
29:          A a = new A();
30:          B b = new C();
31:          A c = b;
32:   
33:   
34:          a.Method();
35:   
36:          //对于对象b,B是它的申明类,C类是它的实现类,先检查申明类
37:          //发现Method()方法是vitual的,接着检查派生类C,发现Method方法被
38:          //override修饰,所以就直接调用了C类的Method
39:          b.Method();
40:   
41:          //对以对象c,它的申明类是A,实现类是B,它先检查自己的Method方法,
42:          //发现A类的Method()方法是virtual方法,接着往下查找B类的Method方法
43:          //发现B类的方法没有使用override,所以它自己调用它父类的方法,即A.method();
44:   
45:          c.Method();
46:   
47:      }
48:  }
49:   
50:   

转载地址:http://eviel.baihongyu.com/

你可能感兴趣的文章
initrd的使用及说明
查看>>
我的友情链接
查看>>
使用记事本编写xml文件保存出现异常原因
查看>>
Excel中文转拼音,要不要空格可自选
查看>>
linux任务计划学习
查看>>
phpcms 调用多级栏目和多级栏目下的文章列表
查看>>
java笔记:第6章 面向对象程序设计
查看>>
keepalived架设简单高可用的nginx的web服务器 ----那些你不知道的秘密
查看>>
open***服务端安装
查看>>
在Eclipse中手动安装pydev插件
查看>>
ubuntu16.04打造vim和python3的IDE
查看>>
Java对象的假克隆
查看>>
eclipse和maven
查看>>
Linux内存实际使用率
查看>>
Hadoop hive sqoop zookeeper hbase生产环境日志统计应用案例(hadoop篇)
查看>>
rsync 安装 配置 实例
查看>>
Linux web服务与HTTP协议基础概念
查看>>
MySQL 行复制
查看>>
Linux 内存中的Cache
查看>>
umail邮件服务器如何保证数据安全性?
查看>>