博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#:重载、重写、隐藏的定义
阅读量:5220 次
发布时间:2019-06-14

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

1. 继承的类型:

  • 实现继承:表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数。派生类型的每个函数采用基类型的实现代码,除非在派生类型的定义中指定重写该函数的实现代码。
  • 借口继承:表示一个类型之继承了函数的签名,没有继承任何实现代码。

2. 多重继承

C#不支持多重实现继承,允许类型派生于多个接口。

3. 虚方法

把一个基类函数声明为virtual,该函数就可以在派生类中重写。

4. 隐藏方法

如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual和override,派生类方法就会隐藏基类方法。

C#中使用关键字new声明我们要隐藏一个方法:

class MyDerivedClass : HisBaseClass{public new int MyGroovyMethod(){// some groovy implementationreturn 0;}}

重载、重写、隐藏的定义:

  • 重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法参数列表不同。通过传递不同的参数来决定调用哪一个方法。
  • 重写:继承时发生,在子类中重新定义父类中的方法。例如:基类方法声明为virtual方法,派生类中使用override声明此方法的重写。
  • 隐藏:基类方法不做声明(默认为非虚方法),在派生类中使用new声明方法的隐藏

重载时,根据参数选择调用方法;

重写时,访问父类、子类皆调用子类的重写方法;

隐藏式,访问父类调用父类的方法,访问子类则调用子类的方法。

比如父类A,有个方法标记为virtual,a(){}   子类B继承A,也声明一个方法a(){}   如果B里面的a()使用override,那么访问A的方法时实际上调用了B里面声明的方法,相当于A的方法被覆盖了,new就不是,访问A的a还是A里面定义的方法,访问B就是B里面定义的方法.

其他关于virtual和override修饰符的重要信息:

  • 重写和被重写的方法必须有相同的可访问性。
  • 不能重写static 方法或非虚方法
  • 方法、属性、索引以及事件,都可以被声明为virtual和override

 

转载于:https://www.cnblogs.com/LilianChen/archive/2013/03/01/2939164.html

你可能感兴趣的文章
20165224 陆艺杰 《Java程序设计》课程总结
查看>>
前端面试手册
查看>>
CodeForces7D 字符串hash + dp
查看>>
Python学习(一)
查看>>
关于Matchvs一些使用心得与建议
查看>>
Gson获取json串中的key-value
查看>>
创建spring boot项目
查看>>
Behave + Selenium(Python) 四
查看>>
系统的横向结构(AOP)
查看>>
linux常用命令
查看>>
有序链表的归并 分类: 链表 2015-06-...
查看>>
A Plug for UNIX 分类: POJ ...
查看>>
寒假作业01
查看>>
自定义simple_tag
查看>>
ubuntu配置全局环境变量后开新shell变量无效的解决方法
查看>>
表格只要外面的边框,不要里面的横线
查看>>
文件名&关键字&标识符、变量声明、流程控制语句
查看>>
第二章002 定位元素
查看>>
MyBatis缓存
查看>>
STL 练习
查看>>