我们常常听说的——重载和重写

       相信大家对“重写”和“重载”这两个词都很耳熟,不过一字之差,却常常把人们弄得迷迷糊糊,其实它们就是

多态的两种表现形式。现在我们以 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 Sub

End 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 Function
End 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. 如果两个同名函数仅返回类型不相同,则它们不能重载,即必须在参数上有所不同。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 32
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值