Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

jimcloudy整理的关于类的听课笔记

时 间:2007-11-01 08:35:20
作 者:jimcloudy   ID:35  城市:福州
摘 要:时间:2006/11/16
教师:朱亦文
位置:QQ群

正 文:

时间:2006/11/16
教师:朱亦文
位置:QQ群

朱亦文(23699869) 20:34:55
大家应该知道窗体是一个对象吧?

朱亦文(23699869) 20:37:03
窗体有许多的方法,如ReQuery,属性,如Name,还有事件,如Form_Open

朱亦文(23699869) 20:37:44
其实窗体对象也是一个类的实例

朱亦文(23699869) 20:38:52
只是窗体的基本结构类,Access已经帮我们设计好了

朱亦文(23699869) 20:39:42
我们的类模块就是为了实现这样类,只是窗体是可视化的类

朱亦文(23699869) 20:40:31
因此,类模块中的类,也可以有自己的属性、方法、事件

朱亦文(23699869) 20:41:52
最简单的属性声明,就是在类模块中,用Public定义一个变量

大丁丁(123339791) 20:42:24
还可以自定义事件?

朱亦文(23699869) 20:42:29
不过这个变量是这个类的属性

朱亦文(23699869) 20:42:59
可以自定义事件,呵呵,没有什么不可以的,呵呵

朱亦文(23699869) 20:43:21
请不要打X

朱亦文(23699869) 20:44:33
但是,这个变量,在实例化成对象后,就是这个对象的专有的属性

朱亦文(23699869) 20:45:53
例如:
Dim oA As New clsABC
Dim oB As New clsABC
oA.text ="AAA"
oB.text="BBB"

朱亦文(23699869) 20:47:06
尽管都是clsABC这个类,但实例化后的对象中属性,完全是不同的值

朱亦文(23699869) 20:47:55
这样程序,就会更清晰,分得清哪个是你的,哪个我的

朱亦文(23699869) 20:48:17
这也就是面向对象设计的一个优越性

朱亦文(23699869) 20:49:57
布衣铁剑(81094935) 20:48:29
这里的Dim和用Public会有不同吗
基本没有什么区别,不过Public是全局的,而Dim与Private类似,只能该模块中使用

大丁丁(123339791) 20:50:56
Public强调了公用,值会改变

朱亦文(23699869) 20:51:20
当然类也可以有自己私有的变量,而不被外界访问
这时我们使用Private来声明变量

朱亦文(23699869) 20:51:47
达到保护私有数据的目的


朱亦文(23699869) 20:53:10
例如:我们在设置程序版本号时,并不希望,外部来更改这个版本号,我们可以这样做:

朱亦文(23699869) 20:54:23
Private m_Ver As String
稍等,去喝口茶


朱亦文(23699869) 20:56:31
对不起,是放水,哈哈,还要等一会

朱亦文(23699869) 20:59:08
Public Property Get Ver() As String
Ver = m_Ver
End Property
Private Sub Class_Initialize()
m_Ver = "1.00"
End Sub

朱亦文(23699869) 21:00:29
那么我们实例化这个类后,可以通过对象的Ver属性来访问这个版本号

朱亦文(23699869) 21:01:02
Dim oA As New clsABC
debug.Print oA.Ver

朱亦文(23699869) 21:01:23
就显示:1.00

朱亦文(23699869) 21:02:18
Public Property Get Ver() As String
这个称为属性过程,在对象中呈现为属性

朱亦文(23699869) 21:02:54
它用来访问受保护的私有变量m_Ver

朱亦文(23699869) 21:03:43
而程序无法去更改m_Ver, 这样m_Ver就保护起来了

朱亦文(23699869) 21:05:02
Private Sub Class_Initialize()
是类的初始化过程,相当于C++中的构造函数,它是类实例化时首先执行的过程

朱亦文(23699869) 21:05:37
完成对象的初始化,本例中给m_Ver赋值

朱亦文(23699869) 21:06:02
听懂了吗?
今晚就上到这里,打字好累

朱亦文(23699869) 21:15:31
再来解释一下代码

朱亦文(23699869) 21:16:07
Property 表示属性过程

朱亦文(23699869) 21:16:37
Get 表示输出属性值

朱亦文(23699869) 21:17:33
那么,当然还有一个相应的输入属性值的关键字:Set

朱亦文(23699869) 21:18:41
如果我们在类代码中不书写Set过程,也就是不允许更改属性

朱亦文(23699869) 21:19:29
下面给一个完整的类的例子

朱亦文(23699869) 21:20:04
新建一个clsCir的类模块

朱亦文(23699869) 21:25:26
Const Pi = 3.14159265
Private r As Double
Public Property Set R(dRad As Double)
r = dRad
End Property
Public Get D() As Double
D = 2 * r
End Property
Public Get S() As Double
S = Pi * r * r
End Property
Private Sub Class_Initialize()
r = 0
End Sub

朱亦文(23699869) 21:27:57
然后新建一个模块,在这个模块中,输入:
Sub Test()
Dim oCir as New clsCir
oCir.r = 3
debug.print oCir.D
debug.Pring oCir.S
End Sub

朱亦文(23699869) 21:28:30
大家试试,看看有什么问题,再提出

朱亦文(23699869) 21:33:04
程序有问题,大家发现了吗?

朱亦文(23699869) 21:54:30
类模块的

Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助