VB.NET 重载、重写与隐藏
来源:互联网 发布:淘宝店铺名片怎么改 编辑:程序博客网 时间:2024/04/30 19:46
重载、重写与隐藏是继承(Inherits)中的三个重要概念。
一、重载
相同方法或属性的不同实现,根据参数数量、类型的不同有多个版本的实现方式。
用法
定义方法或属性时使用Overloads关键字,程序将根据参数的数量、类型和顺序选择正确的版本实现。
示例
Public ClassTheClass
PublicOverloads SubToOverload(ByVal value AsInteger)
MsgBox("I got an integer:" & CStr(value))
EndSub
'重载
PublicOverloads SubToOverload(ByVal value AsString)
MsgBox("I got a string:" & value)
EndSub
End Class
使用
Sub Main()
DimMyClass 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
必须重写
Overrides
重写方法、属性,在派生类中实现
注:如果使用了MustOverride,则基类必须是MustInherit的抽象类。
示例
'基类
Public Class TheBase
PublicOverridable SubTalk()
MsgBox("What's up?")
EndSub
End Class
'派生类
Public Class TheDerived
InheritsTheBase
PublicOverrides SubTalk()
MsgBox("I'm not the base.")
EndSub
End Class
使用
Sub Main()
DimTestClass As TheDerived
TestClass.Talk()
End Sub
运行结果
对话框显示: I'm not the base.
三、隐藏
创建大范围成员的局部版本,也可以用其他类型来隐藏一种类型,可以声明相同名称的属性,以隐藏继承的方法。
当派生类中某方法或属性的名称和范围与基类中的方法或属性冲突时,需要使用Shadows关键字。
此时将使用生存周期最短的那一个(即更加“局部”)。
用法
用于派生类。
示例
基类与派生类均定义了Value成员,名称冲突,因此需要在派生类中使用Shadows关键字声明。
'基类
Class TheBase
PublicValue As Double= 3.14
End Class
'派生类
Class TheDerived : Inherits TheBase
PublicShadows ReadOnlyProperty Value() AsDouble
Get
Return 9527
End Get
EndProperty
End Class
使用
当使用TheDerived类对象的Value成员时,将选取最“局部”的Value属性,而不是基类的Value变量。
Sub Main()
DimTestClass As TheDerived
MsgBox(TestClass.Value)
End Sub
运行结果
对话框显示: 9527
- VB.NET 重载、重写与隐藏
- 重载、重写与隐藏
- 重写和重载与隐藏
- VB.NET之旅(六)—重载与隐藏
- 方法的重载、隐藏与重写辨析
- 成员函数的重载/重写与隐藏
- Henry的VB.NET之旅(六)—重载与隐藏
- Henry的VB.NET之旅(六)—重载与隐藏
- 重载 重写 隐藏
- 重载重写覆盖隐藏
- 重载 重写 隐藏
- 重写 重载 隐藏
- 重载,重写,隐藏,覆盖
- C++ 重载、重写、隐藏
- 重载、重写、隐藏
- 重载-重写-隐藏
- 重写 重载 隐藏
- 重载、覆盖、重写(隐藏)
- 短信笑话
- js FF IE下去background-color 问题
- 高效能人士的七个习惯
- 让普通MP4可以看pdf格式文件
- 配置Log4j
- VB.NET 重载、重写与隐藏
- 中国最美的100首情诗
- 学习JavaEE的感受
- 学习Servlet的感受
- 存百度免费空间
- 关于数据库与编程语言小议
- 宝宝一岁了!
- 关于Java的介绍
- 【转帖】C# 获取系统启动项