C#学习分享 关于类方法的隐藏与重写
2018-01-19 22:07
423 查看
这篇博文是自己的学习稿,在这里做一下记录。也希望给许多遇到和我一样问题的同学提供一些帮助。
输出内容:
执行b1.fun
调用基类的fun方法
A.fun
执行a1.fun
A.fun
结论:
请先注意a1.fun1()的执行结果,目前是原A类的fun1函数。那么,我将代码做修改,使用重写的方式。
代码粒子:
输出内容:
执行b1.fun
B.fun
执行a1.fun
B.fun
隐藏
代码例子: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函数。相关文章推荐
- (原创)c#学习笔记10--定义类成员02--类成员的其他议题02--调用重写或隐藏的基类方法
- c#方法重写和隐藏的学习示例
- 学习c#(方法的重写和隐藏)
- 黑马程序员之C#学习笔记: c#中重写(覆盖)和隐藏类的方法
- 关于在C#中对类中的隐藏基类方法和重写方法的理解
- 学习C#高级编程--方法重写和隐藏
- 关于C#中,继承类重写与隐藏基类方法的区别!
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- c#隐藏基类方法和重写基类方法的区别
- C# 读书笔记之访问虚方法、重写方法和隐藏方法
- 分享一篇关于C#对文件操作的日志,方法很全
- 学习C#高级编程--在重写基类的方法中,如何调用基类的函数
- c#隐藏和重写基类方法的异同
- C#继承类重写与隐藏基类方法的区别
- 【KK学习笔记】c# 虚方法 virtual 、 重写方法 override 、new 的使用与理解
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- 【转】C#中隐藏(new)和方法重写(override)和重载(overload)
- c#中隐藏(new)和方法重写(override)和重写(overload)的区别
- C# 关于方法的隐藏和重载的比较
- c#隐藏方法(new)和方法重写(override)