c#继承中什么是隐式继承 显示继承 举个例子

来源:百度知道 编辑:UC知道 时间:2024/05/08 15:37:23
隐式继承 和显示继承
在什么情况下应用
来个代码例子 提示说明下
下面那哥们谢谢了
不过不是我要的
跪求

拷贝了别人的一个问题,也许对你有帮助
-------------------------------------------------------------
直接看代码

基类

Codeclass BasicClass{ public virtual void VirtualMethod() { //. } public void NewMethod() { //. }}

继承类

Codeclass ExtendClass:BasicClass{ public override void VirtualMethod() { //.. } public new void NewlMethod() { //.. }}

Main

Codeclass MainClass{ static void Main(string[] agrs) { BasicClass c = new ExtendClass(); c.VirtualMethod(); c.NewMethod(); }}

问题来了,在main中,

调用VirtualMethod时,调用的是继承类种重写的方法.

而调用隐式继承NewMethod时,则是调用的基类中的方法.

为什么呢?

因为你在ExtendClass中使用了new关键字

new关键字的作用是打断继承链

因此当你调用c.NewMethod()时,从BasicClass(编译期类型)开始延继承链查找,目标是运行期 类型(你的示例中就是ExtendClass),查找这条链上的所有NewMethod的实现

但是发现ExtendClass中使用的是new,因此继承链在ExtendClass的上一级停止,也就是停在了BasicClass中,调用了B