【C#】重写和重载的区别
导读:学习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>
输出结果:
四、区别
经过上面的两个简单例子,现在,总结一下重载和重写的区别。
五、个人总结
其实吧,开始挺讨厌师哥的(反正师哥没加我博客,哈哈)。都学了那么久了,懂得肯定比我多很多,每次那么一说,我这就心疼、肝疼,敢情自己折腾了半天,到那儿了还不够师哥噻牙缝呢。开始是怎么做怎么都不对,自己觉得挺对的,师哥一看就又不对了。说句良心话,真的很受挫,都不想学习了。
其实吧,师哥也挺好的。老师说了:不怕不知道,就怕不知道。虽然对于这些问题还是有问题,但总比什么都不知道的好,这次懂点,下次懂点,指不准哪天就懂了。所以说:何下下同学,好好学习吧,咱得越挫越勇才行!
【C#】重写和重载的区别的更多相关文章
- java_重写与重载的区别
重写与重载的区别 重载(Overloading)和重写(Overriding)是Java中两个比较重要的概念.但是对于新手来说也比较容易混淆.本文通过两个简单的例子说明了他们之间的区别. 定义 重载 ...
- java语言中public、private、protected三个关键字的用法,重写和重载的区别。
java语言中public.private.protected三个关键字的用法,重写和重载的区别. 解答: 作用域 当前类 同包 子类 其它 public √ √ √ √ protected √ √ ...
- java 重写和重载的区别
重写:重写是子类的方法覆盖父类的方法,有两个重要特点 1.子类方法名和参数类型.个数必须和父类一样. 2.如果有返回值,则返回值类型也必须和父类一样. //父类 public class Bird() ...
- Java中,方法的重写、重载的区别,以及多态的实例
首先我们要明白什么是重写和重载 重写(override):子类方法覆盖了父类的方法. (类与类之间继承的关系) 例:父类代码 public class Deng { public void Qi ...
- Java 面向对象之继承和重写OverWrite,重写和重载的区别,抽象类
01继承的概述 A:继承的概念 a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作 ...
- java中方法的重写与重载的区别
重载: 方法名相同,但是参数必须有区别(参数不同可以使类型不同,顺序不同,个数不同).前提: 同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载 参数列表不同指参数的类型,参数的个数, ...
- 方法的重写与重载的区别(Override与Overload)。重载的方法是否可以改变返回值的类型
方法的重写(Override)与重载(Overload)的区别.重载的方法是否可以改变返回值的类型?[基础] 解释: 方法的重写overriding和重载Overloading是Java多态性的不同表 ...
- Java—重写与重载的区别
1.重写(Override) 子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除了子类中方法的返回值是父类中方法返回值的子类时)都相同的情况 ...
- 浅谈Java中重写与重载的区别
重载和重写是Java中两个截然不同的概念.但是却因为名字相近导致很多人经常混淆. 下面用例子展示出他们之间的区别. 在Java中,重载(overloading) 发生在本类.方法名相同,参数列表不同, ...
随机推荐
- CF1059B Forgery
思路: 若某个位置是‘.’,说明不能在周围的8个位置下笔.在所有可以下笔的位置填充一次,看能否“包含”需要的图案即可. 实现: #include <iostream> using name ...
- 1102 采药 2005年NOIP全国联赛普及组
1102 采药 2005年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 辰辰是个天资聪颖的孩子 ...
- 从零开始利用vue-cli搭建简单音乐网站(五)
上一篇文章讲到的是如何利用mongoose从数据库读取数据然后更新页面,接下来要实现的就是用户注册登录功能,这个功能涉及到的东西太多了,今天只实现了登录功能,登陆之后更新导航条界面,最后效果如下: 登 ...
- 内存泄露,C++
内存泄露,C++通常是指new出来的内存没有delete掉.在你的代码里边,new了一块内存,然后马上就delete,自然就没有内存泄露了(呃……其实我也不确定啦,因为你用的是delete,而不是de ...
- UIButton Making the hit area larger
http://stackoverflow.com/questions/808503/uibutton-making-the-hit-area-larger-than-the-default-hit-a ...
- asp.net mvc集成log4net
第一步:在web项目的引用中添加log4net.dll,可以通过Nuget直接下载并安装: 第二步:在web项目的web.config配置文件的configuration节点内添加log4net节点, ...
- 92.背包问题(lintcode)
注意j-A[i-1]必须大于等于0,只大于0会报错 class Solution { public: /** * @param m: An integer m denotes the size of ...
- Django-C001-快速入门
此文章完成度[100%]留着以后忘记的回顾.多写多练多思考,我会努力写出有意思的demo,如果知识点有错误.误导,欢迎大家在评论处写下你的感想或者纠错. Django Django是一个开放源码的We ...
- Springboot 命令注入属性[--]&[-D]
场景 在用Jenkins,做自动化部署时,遇到一些命令问题. 需要通过命令的形式,注入些业务值. -D 系统属性注入 Java,启动jar 命令: java [ options ] -jar file ...
- 企业自颁布服务器证书的有效性验证(C#为例)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/notjusttech/article/details/72779904 目前根据项目的需要,整理了一 ...