一、什么是类?
用面向对象的编程思想来看,类就是存储数据同时给一组相关代码赋予协调功能的方式。类是面向对象编程的核心。
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 cl '引用cls
Private Sub Form_Load()
myCLS.Attach Text1 '启动类
End Sub
Private Sub Form_Unload(Cancel As Integer) '在代码结束时记得释放资源
Set myCLS = Nothing
End
End Sub
★VB部分相关文章推荐:★
☆VB 读写TXT文本文件函数
☆VB 提取TextBox 文本框中指定一行字符串
☆VB 获取汉字拼音的首字母
☆VB 汉字字符串转换成拼音
☆VB判断指定名字的进程是否存在函数
☆VB 两种方法实现热键
☆VB 使用SendMessage枚举文件与目录
☆VB 二进制数组与十六进制字符串相互转换
☆VB 二进制数据读写实例
☆VB 进制转换大全(十进制、十六进制、八进制、二进制、二进制流)互转
☆VB 判断是否文本文件
☆VB 读取UTF-8编码文件函数
☆VB 按指定编码格式写入文本文件
☆VB UTF-8 URL编码函数
☆VB 实现UTF-8 与GB2312互转
☆VB 设置ListView中指定一行的背景颜色
☆VB SendMessage向其他程序窗口发送字符串消息实例
☆VB Listview导出到CSV文件函数
☆vb卸载所有窗体
☆VB中Null, Empty, Nothing, and vbNullString的区别
☆利用API函数计算程序运行时间VB
☆获取快捷方式原文件路径vb路径
☆利用VB函数Dir()实现递归搜索目录
☆VB数组的清除和重新定义
☆用RtlAdjustPrivilege来调整进程权限(VB6.0代码)
☆获取对象的接口信息(方法/属性/事件)(VB6代码)
☆VB6中给数组赋值的限制
☆[vb]一些窗口消息的详解
☆VB直接播放EXE文件中的声音文件
☆VB中利用CopyMemory使用指针
☆VB读写注册表的三种方法
☆[VB]SaveSetting 语句 和 DeleteSetting 语句
☆VB APP对象属性一览表 + 灵活使用VB的APP对象
☆[vb]SendMessageA函数
☆使用VB绘制抛物线动画曲线
☆关于vb中的容器
☆[vb]利用WScript.Shell对象隐藏cmd命令行运行
☆浅析VB For Each.Next语句
☆VB中窗体模块、标准模块、类模块的区别
☆引用 VB类模块
☆VB中什么是类,类模块有什么作用
☆VB SendKeys 语句
☆VB 全局热键
☆用VB轻松调用其他程序
☆vb读取txt文件到textbox
☆如何去优化你的VB程序3
☆如何去优化你的VB程序2
☆如何去优化你的VB程序1
☆[VB]在状态栏中显示帮助信息
☆[VB]把屏幕保存为图像
☆Mp3Play.ocx控件让音乐之声响起来
更多精彩>>>
评论