一、什么是类? 用面向对象的编程思想来看,类就是存储数据同时给一组相关代码赋予协调功能的方式。类是面向对象编程的核心。 VB最为人垢病的是它的面向对象特性。实际上VB是一种基于对象的开发工具。在VB中 建立的类是支持继承的。下面是范例: 首先建立一个新工程,然后添加一个新的类模块(Class Module),类名称设定为BaseClass。 然后在BaseClass中加入以下代码: Public Sub BaseSub() '虚拟特性,BaseSub在子类中实现 End Sub 然后添加两个类模块,类名称分别设定为ImpClass以及ImpClass2,然后在类的代码窗口中写入: Implements BaseClass '继承特性 上面这行代码说明类ImpClass以及ImpClass2实现类BaseClass。 在ImpClass窗口中加入以下代码: Private Sub BaseClass_BaseSub() '实现基类中的BaseSub方法 MsgBox "Hello. This is Imp. inherited from BaseClass" End Sub 在ImpClass2中加入以下代码: Private Sub BaseClass_BaseSub() MsgBox "Hello. This is Imp2. inherited from BaseClass" End Sub 完成了上面的类代码后,打开Form1,在上面添加一个CommandButton,在按钮的Click事件中 写入以下代码: Dim xImp As New ImpClass Dim xIMp2 As New ImpClass2 Dim xBase As BaseClass Set xBase = xImp '多态特性 xBase.BaseSub Set xBase = xIMp2 xBase.BaseSub Set xBase = Nothing Set xImp = Nothing Set xIMp2 = Nothing 运行程序,点击CommandButton,程序会先后弹出消息框,显示在ImpClass以及ImpClass2中 设定的消息。 从上面的代码中可以看到VB中是如何实现面向对象的特性:继承、虚拟以及多态的。只是同 诸如Java、C++、Object Pascal不同,VB将很多实现的细节隐藏了起来。
类是包含了方法、属性、数据成员的高级代码模块,它既在模块的范畴之内,又是一个没有图形界面的Active ocx,程序员可以象使用控件一样使用它,但却不能看到它,值得注意的是,类是不能继承的。 类能够使我们高效的完成对某一个或者某几个特定的对象的复杂操作,对象的动作就是类的方法,对象的属性就是类的属性过程。相对而言,如果编程的对象是一组事物,那么,我们采用标准模块的方式是非常合适的,在下列两种情况下,应该使用类进行代码处理: (1)创建大量性质相近的对象; (2)提高代码的封装性。 类的创建非常简单,在进行代码编写的时候,在“工程”菜单中选择“添加类模块”项目,就可以添加一个空白的类。 类文件一般以.cls作为扩展名保存。(二)类的方法的实现; 类的方法类似于动态链接库的接口函数,它能够接受其他窗体代码的指定类型参数,并且传递到类中。一般来说类的方法是能够指定是否有返回值的。它在类中通常是一个public过程。请看下面的代码示例,它使一个密码框拒绝非字母的输入: (1)类cls的代码; Option Explicit'变量检查 Private WithEvents mytxt As TextBox '本类中的方法接受和控制一个text密码框 Dim isNUM As Boolean '类的模块级变量 Public Sub Attach(itTEXT As TextBox) '接受外部变量到mytxt中 Set mytxt = itTEXT End Sub Private Sub mytxt_KeyUp(KeyCode As Integer, Shift As Integer) isNUM = (KeyCode >= 65) And (KeyCode <= 90) '测试密码框的键盘输入是否是英文字母 If isNUM = False Then Beep mytxt.Text = "" '如果输入不是英文字母则响铃并且清空密码框内容 MsgBox "非法字符输入!" End If Debug.Print mytxt.Text '调试输出密码框内容 End Sub '类的代码结束 (2)类的引用; 已经编写完成的类可以经过两种格式进行引用,第一种方式:Private(public或者dim) myCLS(指定的类名) As New cls(编写完成的类名);第二种方式较多用于程序编写风格较“老”的程序员:首先在窗体代码中进行模块级声明——Dim myCLS As cls,然后在具体代码过程中进行具体定义—— Set mycls = New cls。这两种方式的效率和代码的简洁性方面可能会有所差别,但在笔者的编程实践中,并没有什么特别的感觉,不过我较多使用第一种方式,因为它书写起来更加方便。另外,在代码结束的时候,使用 Set myCLS = Nothing来取消类的资源占用是一种非常好的编程习惯。 在窗体form1中(窗体有一个密码框控件text1,passworldchar="*")添加以下代码: Option Explicit Private myCLS As New cls '引用cls Private Sub Form_Load() myCLS.Attach Text1 '启动类 End Sub '在代码结束时记得释放资源 Private Sub Form_Unload(Cancel As Integer) Set myCLS = Nothing End End Sub
类模块是.cls文件,主要用于定义类和设计ActiveX EXE、ActiveX DLL。在VB中选择“工程|添加类模块”就可以在工程中加入一个类模块。然后,可以使用菜单中的“添加过程”命令添加属性、方法和事件。
用面向对象的编程思想来看,类就是存储数据同时给一组相关代码赋予协调功能的方式。类是面向对象编程的核心。
VB最为人垢病的是它的面向对象特性。实际上VB是一种基于对象的开发工具。在VB中
建立的类是支持继承的。下面是范例: 首先建立一个新工程,然后添加一个新的类模块(Class Module),类名称设定为BaseClass。
然后在BaseClass中加入以下代码: Public Sub BaseSub() '虚拟特性,BaseSub在子类中实现 End Sub 然后添加两个类模块,类名称分别设定为ImpClass以及ImpClass2,然后在类的代码窗口中写入:
Implements BaseClass '继承特性
上面这行代码说明类ImpClass以及ImpClass2实现类BaseClass。
在ImpClass窗口中加入以下代码:
Private Sub BaseClass_BaseSub() '实现基类中的BaseSub方法
MsgBox "Hello. This is Imp. inherited from BaseClass"
End Sub 在ImpClass2中加入以下代码:
Private Sub BaseClass_BaseSub()
MsgBox "Hello. This is Imp2. inherited from BaseClass"
End Sub 完成了上面的类代码后,打开Form1,在上面添加一个CommandButton,在按钮的Click事件中
写入以下代码: Dim xImp As New ImpClass
Dim xIMp2 As New ImpClass2
Dim xBase As BaseClass Set xBase = xImp '多态特性
xBase.BaseSub
Set xBase = xIMp2
xBase.BaseSub
Set xBase = Nothing Set xImp = Nothing
Set xIMp2 = Nothing
运行程序,点击CommandButton,程序会先后弹出消息框,显示在ImpClass以及ImpClass2中
设定的消息。
从上面的代码中可以看到VB中是如何实现面向对象的特性:继承、虚拟以及多态的。只是同
诸如Java、C++、Object Pascal不同,VB将很多实现的细节隐藏了起来。
类能够使我们高效的完成对某一个或者某几个特定的对象的复杂操作,对象的动作就是类的方法,对象的属性就是类的属性过程。相对而言,如果编程的对象是一组事物,那么,我们采用标准模块的方式是非常合适的,在下列两种情况下,应该使用类进行代码处理: (1)创建大量性质相近的对象; (2)提高代码的封装性。 类的创建非常简单,在进行代码编写的时候,在“工程”菜单中选择“添加类模块”项目,就可以添加一个空白的类。 类文件一般以.cls作为扩展名保存。(二)类的方法的实现; 类的方法类似于动态链接库的接口函数,它能够接受其他窗体代码的指定类型参数,并且传递到类中。一般来说类的方法是能够指定是否有返回值的。它在类中通常是一个public过程。请看下面的代码示例,它使一个密码框拒绝非字母的输入: (1)类cls的代码; Option Explicit'变量检查 Private WithEvents mytxt As TextBox '本类中的方法接受和控制一个text密码框 Dim isNUM As Boolean '类的模块级变量 Public Sub Attach(itTEXT As TextBox) '接受外部变量到mytxt中 Set mytxt = itTEXT End Sub Private Sub mytxt_KeyUp(KeyCode As Integer, Shift As Integer) isNUM = (KeyCode >= 65) And (KeyCode <= 90) '测试密码框的键盘输入是否是英文字母 If isNUM = False Then Beep mytxt.Text = "" '如果输入不是英文字母则响铃并且清空密码框内容 MsgBox "非法字符输入!" End If Debug.Print mytxt.Text '调试输出密码框内容 End Sub '类的代码结束 (2)类的引用; 已经编写完成的类可以经过两种格式进行引用,第一种方式:Private(public或者dim) myCLS(指定的类名) As New cls(编写完成的类名);第二种方式较多用于程序编写风格较“老”的程序员:首先在窗体代码中进行模块级声明——Dim myCLS As cls,然后在具体代码过程中进行具体定义—— Set mycls = New cls。这两种方式的效率和代码的简洁性方面可能会有所差别,但在笔者的编程实践中,并没有什么特别的感觉,不过我较多使用第一种方式,因为它书写起来更加方便。另外,在代码结束的时候,使用 Set myCLS = Nothing来取消类的资源占用是一种非常好的编程习惯。 在窗体form1中(窗体有一个密码框控件text1,passworldchar="*")添加以下代码: Option Explicit Private myCLS As New cls '引用cls Private Sub Form_Load() myCLS.Attach Text1 '启动类 End Sub '在代码结束时记得释放资源 Private Sub Form_Unload(Cancel As Integer) Set myCLS = Nothing End End Sub
在网上有很多的,也有很多下载的.
http://impan.myrice.com/index-1.htm