您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

什么是类,什么是对象

时间:2020-05-20 10:30:53  来源:  作者:

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

一什么是类? 类是对象的"灵魂"。对象可以是任何事物,而类不会做任何事情,也不会占用内存,只有当类成为对象并使用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 自定义类型只是静态地存储数据。

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

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

三 类和对象的比较

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

Sub mynzclass1_1()

Sheets("1").Activate

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

End Sub

上面代码的第二句:Range("A1").Value = "Hello,VBA world"

我们把这这句代码全部放开,把隐藏的补充完整,看看是什么样子:

Application.ActiveWorkbook.ActiveSheet.Range("A1")="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"对象,属性:轮子是某某牌子的,前挡风玻璃是某某牌子的。这些就是很具体的属性值了。



Tags:   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、简介很多时候我们都需要用到一些验证的方法,有时候需要用正则表达式校验数据时,往往需要到网上找很久,结果找到的还不是很符合自己想要的。所以我把自己整理的校验帮助类分...【详细内容】
2021-12-27  Tags:   点击:(1)  评论:(0)  加入收藏
学生在面对报表时感到无助,加上无法直接解释检测结果,这些真的是原因吗?这到底是什么原因呢?自然,你不知道怎么读论文检查系统的报告。一开始了解到中国知网系统,甚至不知道它在哪...【详细内容】
2021-12-24  Tags:   点击:(5)  评论:(0)  加入收藏
视频内容存在以下9种低成本制作的问题,平台自12月20号开始,将不再给这些创作者发放萌芽补贴,很多新手都中招了,来看一下有没有你。得到萌芽补贴的朋友都知道,这个补贴比自己的收...【详细内容】
2021-12-24  Tags:   点击:(5)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  Tags:   点击:(12)  评论:(0)  加入收藏
近日,#职业技术院校学生未毕业就被抢空#话题冲上热搜,引发关注与热议。据报道,如今,很多中高级职业技术院校的学生,往往还未毕业,就被各大企业争抢一空。深圳技师学院激光教研室主...【详细内容】
2021-12-15  Tags:   点击:(11)  评论:(0)  加入收藏
eBay作为全球电商巨头,在全球拥有大量消费者,主要目标市场包括美国和英国,2021年已经临近年末,近日该平台2021的热销品类出炉。截图自ebay export 官网eBay export公布了2021年...【详细内容】
2021-12-15  Tags:   点击:(9)  评论:(0)  加入收藏
对于一般的投资者而言,ETF是一种非常便捷的投资标的,特别它能最大程度降低单只个股带来黑天鹅事件的不利影响,获得相关行业、指数的上涨收益,并且它交易没有印花税,没有印花税、...【详细内容】
2021-12-14  Tags:   点击:(6)  评论:(0)  加入收藏
我国茶叶不但分类繁琐,不同种类地狱分布不同,代表茶也不同,而且每种茶的冲泡,品饮方式更有不同的讲究 ...【详细内容】
2021-12-14  Tags:   点击:(13)  评论:(0)  加入收藏
1)根据结构可以分为单联式水龙头、双联式水龙头、三联式水龙头等。 2)根据开启方式可以分为螺旋式水龙头、扳手式水龙头、抬启式水龙头、按压式水龙头、触摸式水龙头、感应...【详细内容】
2021-12-09  Tags:   点击:(15)  评论:(0)  加入收藏
1、按照证据的法定种类来分,有这8种:A、当事人陈述:效力极低,容易夸大、不中立B、书证:以内容来证明事实,例如合同,证明效力高C、物证:以物本身来证明事实,证明效力高,但是物证没这么...【详细内容】
2021-12-09  Tags:   点击:(13)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条