| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1714 人关注过本帖
标题:[讨论]VB .NET学习笔记: 重载、重写与隐藏
只看楼主 加入收藏
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
结帖率:100%
收藏
 问题点数:0 回复次数:0 
[讨论]VB .NET学习笔记: 重载、重写与隐藏

VB .NET学习笔记

重载、重写与隐藏
Overloads, Overrides And Shadows

恳请高人指教.

Nobi
2007-6-15

这是继承(Inherits)中的三个重要概念。

重载
相同方法或属性的不同实现,根据参数数量、类型的不同有多个版本的实现方式

用法
定义方法或属性时使用Overloads关键字,程序将根据参数的数量、类型和顺序选择正确的版本实现。

示例
Public Class TheClass
Sub ToOverload(ByVal value As Integer)
MsgBox("I got an integer:" & CStr(value))
End Sub
'重载
Sub Overloads ToOverload(ByVal value As String)
MsgBox("I got a string:" & value)
End Sub
End Class

使用
Sub Main()
Dim myClass As TheClass
myClass.ToOverload(9527)
myClass.ToOverload("Hello Nobi!")
End Sub

运行结果
第一个对话框显示: I got an integer:9527
第二个对话框显示: I got a string:Hello Nobi!

例外
在同一个类中重载时可以省略Overloads关键字。


重写
与重载不同,重写方法的参数数量、类型都完全相同,直接代替其所继承的方法或属性。

用法
用于派生类。在基类的方法或属性定义时使用下列修饰符控制怎样重写:
Overridable 允许重写。
NotOverridable 禁止重写。
MustOverride 必须重写。如果使用了MustOverride,则基类必须是MustInherit的抽象类。
Overrides 重写方法、属性。在派生类中实现

示例
'基类
Public Class TheBase
Public Overridable Sub Talk()
MsgBox("What's up?")
End Sub
End Class
'派生类
Class TheDerived : Inherits TheBase
Public Overrides Sub Talk()
MsgBox("I'm not the base.")
End Sub
End Class

使用
Sub Main()
Dim myClass As TheDerived
myClass.Talk()
End Sub

运行结果
对话框显示: I'm not the base.

隐藏
创建大范围成员的局部版本,也可以用其他类型来隐藏一种类型,可以声明相同名称的属性,以隐藏继承的方法。
当派生类中某方法或属性的名称和范围与基类中的方法或属性冲突时,需要使用Shadows关键字。
此时将使用生存周期最短的那一个(即更加“局部”)。

用法
用于派生类。

示例
基类与派生类均定义了Value成员,名称冲突,因此需要在派生类中使用Shadows关键字声明。
'基类
Class TheBase
Public Value As Double = 3.14
End Class
'派生类
Class TheDerived : Inherits TheBase
Public Shadows ReadOnly Property Value() As Double
Get
Return
9527
End Get
End Property

End Class

使用
当使用TheDerived类对象的Value成员时,将选取最“局部”的Value属性,而不是基类的Value变量。
Sub Main()
Dim myClass As TheDerived
MsgBox(myClass.Value)
End Sub

运行结果
对话框显示: 9527

搜索更多相关主题的帖子: 重写 NET 笔记 重载 隐藏 
2007-06-15 20:09
快速回复:[讨论]VB .NET学习笔记: 重载、重写与隐藏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026324 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved