【C#】五分钟搞懂重写和重载

在开发机房重构的过程中,博主一直在重复两件事情,重写和重载。刚刚接触这两个概念的时候也是很蒙逼,但是随着学习的深入,现在对这两个词的概念算是能够区分开了。今天就来说一说重写和重载。

重写(override)

在C#中,派生类可以继承基类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动得继承基类的方法,而是想做一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

例如,假设动物类存在“叫”的方法,从中派生出猫和狗,猫和狗叫的形式是不一样的,因此同样的方法需要两种不同的实现,这就需要“重写编写”基类中的方法。“重写”基类方法就是修改它的实现或者说在派生类中重新编写。

简单代码展示:

Public class shout
{
	Public void doShout()
	{
	//叫的抽象方法
	}
}
Public class catShout:shout
{
	Public void doShout()
	{
	//猫叫的方法
	}
}
Public class dogShout:shout
{
	Public void doShout()
	{
		//狗叫的方法
	}
}

总结:

  1. 必须在继承里
  2. 方法名、参数个数和参数类型必须相同
  3. 派生类重写的方法的访问权限不能低于基类的权限
  4. 派生类抛出的异常应该和基类相等或比基类更小

重载(overload)

简单说,就是函数或者方法有相通的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

回想当年,你在高中努力奋斗,精力十足,最终考上大学。然而现在让你回到之前的高中学习,但此时,再也考不上当年的大学。同样的学校(类),同样的学习方式(方法),因为条件改变了(参数类型),就再也考不上当年的大学了(返回结果),这时候你考大学就被重载了。

简单代码演示:

Public class artist
{
	Public void perform(instrument)      {  //play instrument }
	Public void perform(song)		 {  //sing songs       }
	Public void perform(movie) 		 {  //play movies      }
}

总结:

  1. 必须同一个类,方法名相同。
  2. 重载的参数列表不同,与参数列表的顺序无关。
  3. 可以抛出基类没有的异常。
  4. 在方法重载中,返回值类型可以不同。

区别

好了,搞明白之后我们来看一看重载和重写的区别吧。
【C#】五分钟搞懂重写和重载