龙空技术网

类与对象的解析

VBA语言専攻 409

前言:

此刻兄弟们对“类的定义java”大致比较看重,我们都想要分析一些“类的定义java”的相关文章。那么小编也在网络上搜集了一些有关“类的定义java””的相关资讯,希望咱们能喜欢,朋友们快快来了解一下吧!

《VBA中类的解读及应用》教程是我推出第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。

类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。

这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第1讲:类与对象的解析。

第一讲 什么是类,什么是对象

大家好,在我之前的教程中分别讲了“VBA代码解决方案”“VBA数据库解决方案”“VBA字典和数组解决方案”,通过对这三套教程的学习,我们对VBA的基本知识和基本的操作能有了一定的了解。这套教材是在前面教材基础上的讲解,希望大家在学习前面教材的基础上再学习本套教材。这套教程,我们讲解VBA的高级内容:VBA中类的解读及应用。今日的内容是第一讲:什么是类,什么是对象。

1 什么是类

类是对象的“灵魂”。对象可以是任何事物,而类不会做任何事情,也不会占用内存,只有当类成为对象并使用Set语句和New关键字实例化为具体对象后,才能做事情并占用内存。

把类实例化为具体对象的语法为:

Dim C As Class

Set C=New Class

上述语句创建了一个名为C的对象,该对象的数据类型为定义的类Class。其特点是:

1) 使用New关键字,可以创建任意数量类的新实例,并且能够将其存储在Collection对象中。

2) 使用Property Let、Set、Get语句,可以编写代码验证赋给类元素的值,并且可以编写当值改变时执行的相应代码。例如,能够编写代码确保某个值为要求的特性。

3) 类可以定义方法(使用Sub过程和Function过程),执行某项动作。

注意点:类与用户自定义类型的区别,下面给出了自定义数据类型的特点,可以很明显的看出两者的不同:

1) 在编译时必须声明所有的自定义类型变量。可以使用动态数组来处理多个自定义类型,但须使用Redim Preserve关键词。

2) 不能在运行时添加新的自定义类型变量。

3) 不能控制赋给自定义类型中元素的值。如只能定义为整数,但假如要求是大于5的值无法进行控制。

4) 自定义类型只是静态地存储数据。

2 什么是类模块,类属性和方法

类模块由属性和方法组成,类本身类似于名词;属性可以当作形容词,用来描述类;方法则为动词,执行操作

3 类和对象的比较

让我们先来看一条非常简单的程序,亲身体会一下类的庐山真面目:

Sub mynzclass1_1() '第一讲 什么是类,什么是对象

Sheets("1").Activate

Range("A1").Value = "Hello,world"

End Sub

上面代码的第二句:Range("A1").Value = "Hello,VBA world",我们把这这句代码全部放开,把隐藏的补充完整,看看是什么样子:

Application.ActiveWorkbook.ActiveSheet.Range("A1").Value="Hello,VBA world"

我们解释一下:

1) Range("A1")为对象,指定单元格.

2) Range("A1")前面,ActiveSheet也是对象,指定了哪个工作表。

3) ActiveSheet前面又有一个对象ActiveWorkbook,指定了是哪个工作薄,

4) ActiveWorkbook前面还有一个Application,指定的是哪个应用。

那么其中的Value是什么?Value是一个Range("A1")这个对象的一个属性。那它是从哪来的呢?它是由Range类定义的。那么range是类还是对象呢?别急,我慢慢讲解,希望大家通过我的讲解能理解类和对象的关系。

在上面的讲解中,我们提到实例化类为具体对象的过程,其实在mynzclass_1引用了一个Range类,并将之实例化后修改了它的属性。而在例子中,我们只不过是将这一切都隐藏起来,直接对一个对象Range("A1")修改它的属性,但Range("A1")这个对象正是引用了Ragne这个类,才具有了Range类的属性"Value"

我们把上面的代码转换一下:

Sub mynzclass1_2() '第一讲 什么是类,什么是对象

Sheets("1").Activate

Dim RA As Range '引用一个Range类

Set RA = Range("A1") 'set将类实例化

RA.Value = "Hello,world" 'RA是一个对象了

Set RA = Nothing '将实例化销毁

End Sub

代码截图:

代码的运行:

上述第二段代码是上面mynzclass1_1的原始代码,从中我们看出类本身并不直接为我们做什么,但是,它却又一直默默地隐藏在幕后规化着我们的动作。是的,这就是类。它是通过对象的方式展现在我们的面前,让我们无时无刻不与之交流,却又常常在不经意间忽视了它的存在。

现在,再回到mynzclass1_1去看,就会很容易的发现,ActiveSheet实际引用了Worksheet类、ActiveWorkbook引用了Workbook类,而Application则引用了和它同名的Application类(这也正是我们会经常被混淆的一个概念,一个对象可以和被它所引用的类同名),原来我们在短短一个赋值的语句中,已经在与这么多的类打交道。

那我们又要怎样来区分类和对象呢?其实它们经常成对地出现在我们面前,只是一个是看得见摸得着的,一个却深藏不露。我们可以这样去理解类与对象:类是一个概念或是一种定义,每个类拥有其自己的特征和行为方式,而对象就是某个类的实例。所以类是对象的“灵魂”,它无处不在,而你却看不到它。

比如:汽车。如果作为类:汽车的定义为有四个或者四个以上轮子,人能够坐在上面,操作它行走的工具(好难的定义)。这个时候“汽车类”是有自己的属性,如:汽车的前轮(是负责转向的)。汽车的前玻璃(是负责挡风的)等等。这里的“汽车”是一个概念抽象的概念。

而我们通常指的汽车是作为对象:如丰田汽车,就是汽车类中的一个大对象,这个大对象中还有小的对象,如“威驰FS”对象,属性:轮子是某某牌子的,前挡风玻璃是某某牌子的。这些就是很具体的属性值了。

今日内容回向:

1 什么是类?

2 类和对象的联系是什么?

本讲内容参考程序文件:VBA-CLASS(1-28).xlsm

学习是自我提高的过程,也是自我修行的过程。学,总会有收获。生命向前,没有达到不了的远方。【分享成果,随喜正能量】谁都盼着好,心里想着美好,但是现实的职场充满了考验,考验每个人信念的储备和知识的储备,当思备用之需,雨来好为伞。

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

① 7→1→3→2→6→5或者7→4→3→2→6→5。

② 7→8

各套教程内容简介:

第7套教程(共三册):《VBA之EXCEL应用》:是对VBA基本的讲解

第1套教程(共三册):《VBA代码解决方案》是入门后的提高教程

第4套教程(16G):VBA代码解决方案之视频(第一套的视频讲解)

第3套教程(共两册):《VBA数组与字典解决方案》:是对数组和字典的专题讲解

第2套教程(共两册):《VBA数据库解决方案》:是对数据库的专题讲解

第6套教程(共两册):《VBA信息获取与处理》:讲解VBA的网络及跨程序应用

第5套教程(共两册):VBA中类的解读和利用:类及接口技术的讲解

第8套教程(共三册):VBA之Word应用(最新教程):word中VBA的利用

标签: #类的定义java