美文网首页通往成功之路
【C#】重写和重载的区别

【C#】重写和重载的区别

作者: 此十八 | 来源:发表于2018-04-26 15:31 被阅读1次

    导读:学习C#的时候,其实没想那么多的。就想着把视频看完,把例子做一下就好了,其实真心不懂那些玩意儿是什么,就好像是又回到了学VB的时候。可是,边上师哥压榨我这本就不聪明的脑袋瓜,问了我好多问题,于是乎,昏天暗地的去给这些问题找答案。唉!那天,师哥问了我几个问题:构造函数是干什么的?重写是什么?重载是什么?重写和重载的区别的是什么?它们分别怎么用?额,先简单说一下吧,以后认识深刻了,再回头修改。

    一、基本定义

    构造函数:是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。((C#中讲面向对象的继承的时候讲了,我是没怎么在意,师哥那么一说,才。。。。。)

    重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。

    重载:一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。

    PS:理解概念

    重载:当年,大街上遇上了一个男的,对他产生了深深地爱意。事过多年,在同一个地点,遇上了同一个人,但此时,再也产生不了当年的爱意。同样的大街(类),同样的人(方法),因为条件改变(参数类型),就再也产生不了爱意(返回结果),这时候,我的感情就被重载了。(或许是厌恶、是冷漠)

    二、实现方法

    重写:通常,派生类继承基类的方法。因此,在调用对象继承方法的时候,调用和执行的是基类的实现。但是,有时需要对派生类中的继承方法有不同的实现。例如,假设动物类存在“跑"的方法,从中派生出马和狗,马和狗的跑得形态是各不相同的,因此同样方法需要两种不同的实现,这就需要"重新编写"基类中的方法。"重写"基类方法就是修改它的实现或者说在派生类中重新编写。

    重载:在一个类中用相同的名称但是不同的参数类型创建一个以上的过程、实例构造函数或属性。

    三、举例说明

    1,重写

    [csharp] view plaincopyprint?

    using System;  

    using System.Collections.Generic;  

    using System.Linq;  

    using System.Text;  

    namespace OverrideTest  

    {  

    class Program  

        {  

    static void Main(string[] args)  

            {  

    my HHX =new my();  

                HHX.talk();  

            }  

    public class you  

            {  

    public virtual void talk()  

                {  

    Console.WriteLine("one");  

                }  

            }  

    public class my : you  

            {  

    public override void talk()  

                {  

    Console.WriteLine("two");  

                }  

            }  

        }  

    }  

    输出结果:

    2,重载

    [csharp] view plaincopyprint?

    using System;  

    using System.Collections.Generic;  

    using System.Linq;  

    using System.Text;  

    namespace 重载  

    {  

    class Program  

        {  

    static void Main(string[] args)  

            {  

    string s = null;  

                show(s);  

    object a = "123";  

                show(a);  

            }  

    static void show(string s)  

                {  

    Console.WriteLine("string");  

                }  

    static void show(object o)  

                {  

    Console.WriteLine("object");  

                }  

            }  

    }  

    输出结果:

    四、区别

    经过上面的两个简单例子,现在,总结一下重载和重写的区别。

    相关文章

      网友评论

        本文标题:【C#】重写和重载的区别

        本文链接:https://www.haomeiwen.com/subject/iufmlftx.html