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

一、基本定义

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

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

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

PS:理解概念

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

二、实现方法

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

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

三、举例说明

1,重写

  1. <span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace OverrideTest
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. my HHX = new my();
  13. HHX.talk();
  14. }
  15. public class you
  16. {
  17. public virtual void talk()
  18. {
  19. Console.WriteLine("one");
  20. }
  21. }
  22. public class my : you
  23. {
  24. public override void talk()
  25. {
  26. Console.WriteLine("two");
  27. }
  28. }
  29. }
  30. }</span></span>

输出结果:

2,重载

  1. <span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace 重载
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. string s = null;
  13. show(s);
  14. object a = "123";
  15. show(a);
  16. }
  17.  
  18. static void show(string s)
  19. {
  20. Console.WriteLine("string");
  21. }
  22. static void show(object o)
  23. {
  24. Console.WriteLine("object");
  25. }
  26. }
  27. }</span><span style="font-family:KaiTi_GB2312;font-size:24px;">
  28. </span></span>

输出结果:

四、区别

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

五、个人总结

其实吧,开始挺讨厌师哥的(反正师哥没加我博客,哈哈)。都学了那么久了,懂得肯定比我多很多,每次那么一说,我这就心疼、肝疼,敢情自己折腾了半天,到那儿了还不够师哥噻牙缝呢。开始是怎么做怎么都不对,自己觉得挺对的,师哥一看就又不对了。说句良心话,真的很受挫,都不想学习了。

其实吧,师哥也挺好的。老师说了:不怕不知道,就怕不知道。虽然对于这些问题还是有问题,但总比什么都不知道的好,这次懂点,下次懂点,指不准哪天就懂了。所以说:何下下同学,好好学习吧,咱得越挫越勇才行!

【C#】重写和重载的区别的更多相关文章

  1. java_重写与重载的区别

    重写与重载的区别 重载(Overloading)和重写(Overriding)是Java中两个比较重要的概念.但是对于新手来说也比较容易混淆.本文通过两个简单的例子说明了他们之间的区别. 定义 重载 ...

  2. java语言中public、private、protected三个关键字的用法,重写和重载的区别。

    java语言中public.private.protected三个关键字的用法,重写和重载的区别. 解答: 作用域 当前类 同包 子类 其它 public √ √ √ √ protected √ √ ...

  3. java 重写和重载的区别

    重写:重写是子类的方法覆盖父类的方法,有两个重要特点 1.子类方法名和参数类型.个数必须和父类一样. 2.如果有返回值,则返回值类型也必须和父类一样. //父类 public class Bird() ...

  4. Java中,方法的重写、重载的区别,以及多态的实例

    首先我们要明白什么是重写和重载 重写(override):子类方法覆盖了父类的方法.    (类与类之间继承的关系) 例:父类代码 public class Deng { public void Qi ...

  5. Java 面向对象之继承和重写OverWrite,重写和重载的区别,抽象类

    01继承的概述 A:继承的概念 a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作 ...

  6. java中方法的重写与重载的区别

    重载: 方法名相同,但是参数必须有区别(参数不同可以使类型不同,顺序不同,个数不同).前提: 同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载 参数列表不同指参数的类型,参数的个数, ...

  7. 方法的重写与重载的区别(Override与Overload)。重载的方法是否可以改变返回值的类型

    方法的重写(Override)与重载(Overload)的区别.重载的方法是否可以改变返回值的类型?[基础] 解释: 方法的重写overriding和重载Overloading是Java多态性的不同表 ...

  8. Java—重写与重载的区别

    1.重写(Override) 子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除了子类中方法的返回值是父类中方法返回值的子类时)都相同的情况 ...

  9. 浅谈Java中重写与重载的区别

    重载和重写是Java中两个截然不同的概念.但是却因为名字相近导致很多人经常混淆. 下面用例子展示出他们之间的区别. 在Java中,重载(overloading) 发生在本类.方法名相同,参数列表不同, ...

随机推荐

  1. jmeter中登录和提交收银出现的错误

    登录出现的错误 登录界面如图所示: 为了防止登录跳转的问题response code 302的问题,要设置 2.提交收银界面 当系统设置必须传送jison格式时,要在HTTP Header Manag ...

  2. (三)mybatis之对Hibernate初了解

    前言:为什么会写Hibernate呢?因为HIbernate跟Mybatis一样,是以ORM模型为核心思想的,但是这两者有相似的地方也有差异的地方.通过这两种框架的比对,可以对mybatis有着更深的 ...

  3. An internal error occurred during: "Map/Reduce location status updater". java.lang.NullPointerException

    eclipse配置hadoop 2.6 服务器做的虚拟机,因为window是的hadoop会出现意想不到的错误,因为,我做了ubuntu的虚拟机供我使用 在虚拟机中进行映射设置 在eclipse中dr ...

  4. Fedora19添加和设置YUM源

    Fedora19添加和设置YUM源添加yum源前先安装fastestmirror/downloadonly插件和axelget插件: 1.安装fastestmirror/downloadonly插件 ...

  5. access处理重复创建表的方法。

    第一种,使用MSysObjects表查找表名为当前创建表的名字的内容,相当于普通查询,但是access数据库有一个安全问题,就是有时候一开始是没有权限去调这些系统表的,这时可以再2007的access ...

  6. HDU 4341 Gold miner (分组背包)

    先把线按照距离原点的距离排序,然后用叉积把在同一条直线上的点放在一起, 把在同一条线上的点中的前i个点当成一个点就转化成了分组背包. 写if(kas++) putchar('\n') 居然PE了,PE ...

  7. stringstream clear与str("")的问题

    一.str与clear函数 C++Reference对于两者的解释: 可见:clear()用来设置错误状态,相当于状态的重置:str用来获取或预置内容 二.区别 运行下面测试代码: #include& ...

  8. 【page-monitor 前端自动化 上篇】初步调研

    转载文章:来源(靠谱崔小拽) 前端自动化测试主要在于:变化快,不稳定,兼容性复杂:故而,想通过较低的成本维护较为通用的自动化case比较困难.本文旨在通过page-monitor获取和分析dom结构, ...

  9. Codeforces Round #273 (Div. 2)-B. Random Teams

    http://codeforces.com/contest/478/problem/B B. Random Teams time limit per test 1 second memory limi ...

  10. webAssmebly实现js数组排序 使用custom elements和Shadow DOM自定义组件

    直接上码了……………… .wat源码 (module (type $t0 (func (param i32 i32))) (type $t1 (func (result i32))) (type $t ...