导读:学习C#的时候,其实没想那么多的。就想着把视频看完,把例子做一下就好了,其实真心不懂那些玩意儿是什么,就好像是又回到了学VB的时候。可是,边上师哥压榨我这本就不聪明的脑袋瓜,问了我好多问题,于是乎,昏天暗地的去给这些问题找答案。唉!那天,师哥问了我几个问题:构造函数是干什么的?重写是什么?重载是什么?重写和重载的区别的是什么?它们分别怎么用?额,先简单说一下吧,以后认识深刻了,再回头修改。
一、基本定义
构造函数:是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。((C#中讲面向对象的继承的时候讲了,我是没怎么在意,师哥那么一说,才。。。。。)
重写:当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。
重载:一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
PS:理解概念
重载:当年,大街上遇上了一个男的,对他产生了深深地爱意。事过多年,在同一个地点,遇上了同一个人,但此时,再也产生不了当年的爱意。同样的大街(类),同样的人(方法),因为条件改变(参数类型),就再也产生不了爱意(返回结果),这时候,我的感情就被重载了。(或许是厌恶、是冷漠)
二、实现方法
重写:通常,派生类继承基类的方法。因此,在调用对象继承方法的时候,调用和执行的是基类的实现。但是,有时需要对派生类中的继承方法有不同的实现。例如,假设动物类存在“跑"的方法,从中派生出马和狗,马和狗的跑得形态是各不相同的,因此同样方法需要两种不同的实现,这就需要"重新编写"基类中的方法。"重写"基类方法就是修改它的实现或者说在派生类中重新编写。
重载:在一个类中用相同的名称但是不同的参数类型创建一个以上的过程、实例构造函数或属性。
三、举例说明
1,重写
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">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"); } } } }</span></span>输出结果:
2,重载
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">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"); } } }</span><span style="font-family:KaiTi_GB2312;font-size:24px;"> </span></span>输出结果:
四、区别
经过上面的两个简单例子,现在,总结一下重载和重写的区别。
五、个人总结
其实吧,开始挺讨厌师哥的(反正师哥没加我博客,哈哈)。都学了那么久了,懂得肯定比我多很多,每次那么一说,我这就心疼、肝疼,敢情自己折腾了半天,到那儿了还不够师哥噻牙缝呢。开始是怎么做怎么都不对,自己觉得挺对的,师哥一看就又不对了。说句良心话,真的很受挫,都不想学习了。
其实吧,师哥也挺好的。老师说了:不怕不知道,就怕不知道。虽然对于这些问题还是有问题,但总比什么都不知道的好,这次懂点,下次懂点,指不准哪天就懂了。所以说:何下下同学,好好学习吧,咱得越挫越勇才行!