jimcloudy整理的关于类的听课笔记-许积云
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


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

发表时间:2007/11/1 8:35:20 评论(0) 浏览(5526)  评论 | 加入收藏 | 复制
   
摘 要:时间: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群(群号:198465573)
 
 相关文章
微软提供的access免费培训教程  【UMVsoft整理  2006/10/13】
参加access公益培训的学习体会  【UMVsoft整理  2006/12/6】
access公益培训学习心得  【jimcloudy  2007/11/1】
access网的公益讲课-VBA的应用  【冯宝宝  2009/12/25】
VB中窗体模块、标准模块、类模块的区别  【shiftwell  2011/7/16】
Access视频课程:VBA类与对象(2)  【朱亦文  2013/9/1】
Access视频课程:VBA类与对象(1)  【朱亦文  2013/9/2】
【Access小品】真是扯谈--类模块与标准模块  【煮江品茶  2014/9/26】
VBA类:隐者的秘密(word文档整理)  【财务小生  2015/1/9】
常见问答
技术分类
相关资源
文章搜索
关于作者

许积云

文章分类

文章存档

友情链接