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