前言
第一次接触到这个问题的时候还是在看C#视频的时候,当时并不是对比出现的这个问题,再一次就是同学问的我,因为在学习时就感觉这两个问题区分的挺清楚的,有什么好争议的呢,当时不屑于回答他的问题,就这么过了,直到最近师父的一次提问,我才开始着手查起来。
再说一句:一些相对简单的概念有时候在论坛中比在博客中更有收获,毕竟是百家争鸣
最后一句:方法重载和方法重写上的比较并不能落脚在语言,而相对于标题来说我好像是自己打自己的脸了。
但其实,对于下面的内容就只能从语言出发。
内容
一、重写(Override)
重写一个方法,以实现不同的功能。一般是用于子类在继承父类时,重新实现父类中的方法。
.NET中的重写规则
1.被重写方法不能以private修饰
2.重写时方法不能用Const修饰
3.重写时方法的参数列表以及返回值类型均可不同
Public Class a
Public Overridable Function ss(a As String) As String
Return "a"
End Function
End Class
Public Class b(Of a)
Public Overloads Function ss() As Int32
Return 3
End Function
End Class
Sub Main()
Dim b As New b(Of a)
Dim a As New a
Dim asd As String = "sddd"
Console.WriteLine(a.ss(asd))
Console.WriteLine(b.ss())
Console.ReadKey()
End Sub
代码显示的结果
二、重载(Overload)
重载一般用于一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同
.NET中的重载规则
1.重载方法时参数类型或个数必须不同
2.不同通过访问权限、返回类型、抛出的异常进行重载
总结
针对于一个方法(忽略细节)。重写就是把它换掉,重载就是给他加个兄弟。