打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
我们常常听说的

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

多态的两种表现形式。现在我们以 VB.NET 语言来说明两者的区别。

 

 

 

      

     

      下面通过例子来认识它们的作用。

 

重写:

      本例中我们声明了三个类,分别代表三种对象:人,父亲,儿子。儿子继承自父亲,父亲又继承自人。

 

 

解析:

  • 抽像类,它包括一个抽象方法,这个方法必须要在其子类中被实现(重写)
  1. Public MustInheritClass People  
  2.   
  3.    Public MustOverride Sub Eat(ByVal FoodName As String, ByVal num As Integer)  
  4.   
  5. End Class  

 

  • 父亲类,继承自 Person 类

       

  1. Public Class Father: Inherits People  
  2.   
  3.   
  4.   
  5.    Public Overrides Sub Eat(ByVal FoodName As String, ByVal num As Integer)  
  6.   
  7.        Console.WriteLine("父亲吃{0},他可以吃{1}碗!", FoodName, num)  
  8.   
  9.    End Sub  
  10.   
  11.   
  12.   
  13. 声明一个可被重写的函数,用 OverrRidable 关键字  
  14.   
  15.    Public Overridable Function GetMyName() As String  
  16.   
  17.        Return "父亲"  
  18.   
  19.    End Function  
  20.   
  21.   
  22.   
  23.    Public Overridable Sub ShowMyFatherClass()  
  24.   
  25.        Console.WriteLine("我的父类是 People")  
  26.   
  27.    End Sub  
  28.   
  29. End Class  

 

  • 声明儿子类,继承自 Father,   在 Father 类中的 Eat 方法标记为OverrRides
  1. Public Class Son :Inherits Father  
  2.   
  3.   
  4.   
  5.    Public Overrides Sub Eat(ByVal FoodName As String, ByVal num As Integer)  
  6.   
  7.        Console.WriteLine("孩子吃{0},他能吃{1}碗!", FoodName, num)  
  8.   
  9.    End Sub  
  10.   
  11.   
  12.   
  13.    Public Overrides Function GetMyName() As String  
  14.   
  15.        '如果要使用父类的实现过程,则使用 MyBase 关键字  
  16.   
  17.        'Return MyBase.GetMyName()  
  18.   
  19.        Return "孩子"  
  20.   
  21.    End Function  
  1. E<span style="font-size:18px;">nd Class</span>  

 

 

   这里有一点要注意:如果一个方法被声明为 NotOverRidable,那么它也同时必须被声明为 OverRide

 

  1. Public NotOverridable Overrides Sub ShowMyFatherClass()  
  2.   
  3.        Console.WriteLine("我的父类是 Father")  
  4.   
  5.    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. 如果两个同名函数仅返回类型不相同,则它们不能重载,即必须在参数上有所不同。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
八种常用VB.NET语法详解
笔记9:vb.net的字符数据流TextReader、TextWriter
How To: Capture map coordinates with a mouse click using ArcObjects SDK for the Microsoft .NET Frame
通过压缩SOAP改善XML Web service性能
共享变量类vb.net中的共享方法、共享变量、全局变量
VB.net学习笔记(二十六)线程的坎坷人生
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服