我们常常听说的——重载和重写
来源:互联网 发布:懒人支架 知乎 编辑:程序博客网 时间:2024/05/20 19:45
相信大家对“重写”和“重载”这两个词都很耳熟,不过一字之差,却常常把人们弄得迷迷糊糊,其实它们就是
多态的两种表现形式。现在我们以 VB.NET 语言来说明两者的区别。
下面通过例子来认识它们的作用。
重写:
本例中我们声明了三个类,分别代表三种对象:人,父亲,儿子。儿子继承自父亲,父亲又继承自人。
解析:
- 抽像类,它包括一个抽象方法,这个方法必须要在其子类中被实现(重写)
Public MustInheritClass People Public MustOverride Sub Eat(ByVal FoodName As String, ByVal num As Integer)End Class
- 父亲类,继承自 Person 类
Public Class Father: Inherits People Public Overrides Sub Eat(ByVal FoodName As String, ByVal num As Integer) Console.WriteLine("父亲吃{0},他可以吃{1}碗!", FoodName, num) End Sub声明一个可被重写的函数,用 OverrRidable 关键字 Public Overridable Function GetMyName() As String Return "父亲" End Function Public Overridable Sub ShowMyFatherClass() Console.WriteLine("我的父类是 People") End SubEnd Class
- 声明儿子类,继承自 Father, 在 Father 类中的 Eat 方法标记为OverrRides
Public Class Son :Inherits Father Public Overrides Sub Eat(ByVal FoodName As String, ByVal num As Integer) Console.WriteLine("孩子吃{0},他能吃{1}碗!", FoodName, num) End Sub Public Overrides Function GetMyName() As String '如果要使用父类的实现过程,则使用 MyBase 关键字 'Return MyBase.GetMyName() Return "孩子" End FunctionEnd Class
这里有一点要注意:如果一个方法被声明为 NotOverRidable,那么它也同时必须被声明为 OverRide
Public NotOverridable Overrides Sub ShowMyFatherClass() Console.WriteLine("我的父类是 Father") End Sub
重载:
在 VB.NET 中,重载用到的关键是OverLoads。请看如下代码:
- Public Sub ShowMySelf(ByVal Name As String)
- Public Sub ShowMySelf(ByVal Name As String, ByVal Age As Integer)
- Public Sub ShowMySelf(ByVal Name As String, ByVal Age As Integer, ByVal Sex AsString)
- Public Overloads Function GetMyInfo() As String
- Public Overloads Function GetMyInfo(ByVal MyID As Integer) As String
这里需要说明几点:
1. 对于在同一类当中,一组名称相同的方法或函数重载时,可以加关键字 OverLoads 或者不加。但如果其中有一个方法加上,那同组其它方法也必须加该关键字。
2. 如果两个同名函数仅返回类型不相同,则它们不能重载,即必须在参数上有所不同。
- 我们常常听说的——重载和重写
- 我们常常遇到的postcode
- Java——重载和重写
- java基础——重写和重载
- 【C#】——重载和重写、覆盖
- Java重写和重载区别—多态
- 函数的重载和重写
- 重载和重写的区别
- Java的重写和重载
- 方法的重写和重载
- 重写和重载的区别
- 重载和重写的区别
- 重载和重写的区别
- Java的重写和重载
- 重写和重载的区别
- 方法的重载和重写
- 重写和重载的区别
- 重写和重载的区别
- AS3 air 访问远程服务器,会出现问题,如何解决,看下面
- 深入理解Java内存模型(四)——volatile
- 优化SQL HINT使用
- 第3.1.4节 理解任务与返回堆栈
- 软件版本中的Alpha,Beta,RC,Trial是什么意思?
- 我们常常听说的——重载和重写
- zabbix基础
- Eclipse中JDK源码绑定
- 多线程的那点儿事(之大结局)
- QT之 QFileIconProvider 获取文件—超大图标
- 解决Android4.1GalleryFlow无法正常显示
- hdu3714(三分法)
- Objective-C语法之异常处理
- poj-2942-点双联通