您的位置:首页 > 编程语言 > C#

C#学习分享 关于类方法的隐藏与重写

2018-01-19 22:07 423 查看
这篇博文是自己的学习稿,在这里做一下记录。也希望给许多遇到和我一样问题的同学提供一些帮助。

隐藏

代码例子:

using System;

class A
{
public void fun()
{
Console.WriteLine("A.fun");
}
}
class B :A
{
new public void fun()
{
Console.WriteLine("调用基类的fun方法");
base.fun();
}
}

class Program
{
static void Main(string[] args)
{
B b1 = new B();
Console.WriteLine("执行b1.fun");
b1.fun();
A a1=b1;
Console.WriteLine("执行a1.fun");
a1.fun();
Console.ReadKey();
}
}


输出内容:

执行b1.fun

调用基类的fun方法

A.fun

执行a1.fun

A.fun

结论:

请先注意a1.fun1()的执行结果,目前是原A类的fun1函数。那么,我将代码做修改,使用重写的方式。

代码粒子:

using System;

class A
{
public virtual void fun()
{
Console.WriteLine("A.fun");
}

}
class B :A
{
public override void fun()
{
Console.WriteLine("B.fun");
}

}

class Program
{
static void Main(string[] args)
{
B b1 = new B();
Console.WriteLine("执行b1.fun");
b1.fun();
A a1 = b1;
Console.WriteLine("执行a1.fun");
a1.fun();
Console.ReadKey();
}
}


输出内容:

执行b1.fun

B.fun

执行a1.fun

B.fun

结论

可以发现,同样是执行a1.fun。但两种方式的执行结果都不一样,这就是它非常明显的区别。在仅仅只是隐藏了方法时,作为类A依旧调用类A的fun函数,但作为重写时,调用的是B中重写的fun函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: