面向对象的编程在VB以后的版本已经使用不幸的是一些面向对象的特点比如说继承方法重载方法覆盖等并没有实现
在VBNET中VB语言成为了完整的OO语言一般说来OO的编程语言支持四个主要的特点
Abstraction抽象
Encapsulation封装
Polymorphism多态
Inheritance继承
让我们概括的了解一下VBNET的OO特点
抽象
VB从VB开始支持抽象面向对象的第一步是有关实体的问题在这里提取对象必要信息的过程我们称为数据抽象
封装
封装允许我们隐藏类内部的完成细节将数据和功能绑定到一起被称为封装这是界面和实现分离的概念封装也在VB后实现
多态
多态也在VB中实现多态是面向对象系统中允许我们有多个不同的功能用同样名字的特性功能的不同之处在于传递给它们的参数不同事实上VB通过两种方式支持多态
通过后期绑定
通过多界面的执行
继承
NET平台的一个大的提高就是使用继承的能力VB引入interface inheritance使VB开发者能够在一定程度上扩展已有对象但是只能访问接口而不是底层的执行
继承就是一个类能够得到一个现有的类的所有接口和行为这样一个类被称为子类当我们构造一个新类它继承已有类的接口和行为我们就创建了一个类的子类
举一个VB或VB的例子你可以创建一个Employee它有一些向姓名地址等的属性如果你想创建一个象 Worker Officer的新类或者别的什么你不能简单的扩展已有的Employee类作为替代你可以选择复制代码到新的对象或者使用委派技术在VBNET中我们拥有完全的继承你可以继承Employee类包括所有的正确代码包括效验读取存储你可以为每一个Employee添加单独的特点如果你需要改变标准的行为你也可以覆盖重载或隐藏基类的方法和属性
覆盖
使用同样的名字替换基类的方法或属性
重载
添加新的不同参数的实现方法
隐藏
替换基类中同样名字的属性
继承也适用于象forms和controls之类的虚类这可以使VBNET创建一个基本的Form包含corporate logos standard menus help systems等然后继承它们创建一个特定的Form拥有与其他Form一样的外观和感觉
Option Strict On
Imports SystemWindowsForms
Public Class Employee
Protected Count As Int available to descendants but not public
Public Overridable Sub funct ()
Count +=
MessageBoxShow (Employee funct: & CountToString Employeefunct MessageBoxButtonsOK)
End Sub
Public Overridable Sub funct()
Count +=
MessageBoxShow (Employee funct: & CountToString Employeefunct MessageBoxButtonsOK)
End Sub
End Class
Public Class Officer
Inherits Employee
Public Overrides Sub funct ()
Count +=
MessageBoxShow (Officer: & CountToString Officerfunct MessageBoxButtonsOK)
End Sub
Public Sub special () The function only for Officer
Count +=
MessageBoxShow (Officers special: & CountToString Officerspecial MessageBoxButtonsOK)
End Sub
End Class
Module Module
Sub Main()
Dim arun As officer
arun = New officer()
officerfunct will call the method defined in Officer
officerfunct will call the method defined in Employee
End Sub
End Module
防止继承:
我们创建的类默认的可以被作为基类使用有时我想创建一个类但是不能被继承我们可以在类的声明时添加NotInheritable关键字
Public NotInheritable Class arungg
……
End Class
当使用这个类时没有别的代码可以使用Inherits关键字创建一个我们类的子类
结论
在VBNET中VB语言终于完整的转变为彻底的OO语言我们现在有完整的inheritance以及其他的特性VBNET不止是提供给我们完整的面向对象的特性也改变我们以往使用VB的一些方法