Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4916|回复: 19

[已解决]类与数据类型有怎样的区别?

[复制链接]
发表于 2010-2-21 19:20 | 显示全部楼层 |阅读模式

它们都有1个字,类。
它们都从声明开始,


DimAs New 坏习惯    '声明变量人,为坏习惯(一个自定义的类名称)类型数据
Dim x As Integer        '声明变量x,为整数类型数据

前者,类模块中定义的自定义类(如坏习惯),
后者,我们平常遇到常用数据类型(如integer)。
它们是怎样的关系?可以不可以说,前者是含有事件的数据类型,而后者不含?谢谢

最佳答案
2010-2-23 18:18

[em06][em06][em06]

我来说说一些概念上的问题,说到类,type,和Integer,这里首先要搞清楚一点,就是这三者都是属于数据类型的一种,Integer并不是类!

根据官方的解释,“数据类型指编程元素可以持有什么类型的数据以及如何存储该数据。数据类型应用于可以存储在计算机内存中或参与表达式计算的所有值。每个变量、文本、常数、枚举、属性、过程参数、过程变量和过程返回值都具有数据类型。”(http://msdn.microsoft.com/zh-cn/library/ffsdktda.aspx

就目前为止,VB的数据类型包括以下类型(注意了,这是最新的解释,和VB6帮助里的即excel里的数据类型的解释并不太一样,而是扩展了很多,具体可以参考上面的网址):

1,基本数据类型:VB预先提供好给用户的,包括整数,非整数,String,BooleanDateObject这种类型也是我们入门班所学的。

2,复合数据类型:除了 Visual Basic 提供的基本数据类型外,您还可以将不同类型的项组合起来以创建“复合数据类型”(如Structure结构、数组和类)。可以从基本类型和其他复合类型生成复合数据类型。

这里所说的“Structure”(结构)是VB升级到最新版本后,代替“Type”的产物(http://msdn.microsoft.com/zh-cn/library/1w657b98.aspx),功能比“type”强大,而我们excel2003用的是VB6,因此还没有“Structure”(结构)一说。

另外,没有一种数据类型包含所有类。虽然一个类可以从另一个类继承,但每一个类均为单独的数据类型。同一类的多个实例具有相同的数据类型。如果将一个类实例变量赋给另一个类,它们不仅具有相同的数据类型,还在内存中指向相同的类实例。

3,在最新的VB2008中,还出现了一个“泛型类型”,通过定义“泛型类”(也是类的一种)实现,因为不能用在的excel里,这里就不说了,有兴趣可以参考一下网址:http://msdn.microsoft.com/zh-cn/library/w256ka79.aspx

由于在最新的VB中,“type”已经被“Structure”(结构)取代,在微软MSDN里只提供了这类和结构之间的异同的详细解释:http://msdn.microsoft.com/zh-cn/library/2hkbth2a.aspx

对于“类”和“type”的关系,除了楼上几位的解释外,补充一下我的一些理解(更多的异同就不总结了):

1,他们都是一种复合数据类型,可以自定义,从而提供给变量使用,使变量可保存多个值

2,类所自定义的数据类型(对象)有更多的成员,如属性,事件,方法等

3,type可以包含实例化的类(对象),类也可以包含自定义的type

4,由于类可以自定义的成员比type更多,因此如爱疯所说,类的能力会更强大

[此贴子已经被作者于2010-2-28 0:49:50编辑过]
发表于 2010-2-21 19:50 | 显示全部楼层

这是哪跟哪!

dim语句是属于用来声明变量的语句之一,它不仅可以声明一个变量的数据类型,还可以声明一个对象变量.

DimAs New 坏习惯 是声明变量"人"为"坏习惯"对象,它具有"坏习惯"对象的一切属性、方法和事件等。

回复

使用道具 举报

发表于 2010-2-21 19:59 | 显示全部楼层

我感觉Integer是微软设计好的类 具体这个类怎么写成的不知道

坏习惯 就是一个自定义的"类"    Integet就是一个整数的类

回复

使用道具 举报

发表于 2010-2-21 20:07 | 显示全部楼层

类呀好累

回复

使用道具 举报

发表于 2010-2-21 20:19 | 显示全部楼层

QUOTE:
以下是引用青城山苦丁茶在2010-2-21 20:07:00的发言:

类呀好累

好象很多年前,偶也说过这话!

 

[em06]

回复

使用道具 举报

 楼主| 发表于 2010-2-21 20:55 | 显示全部楼层

QUOTE:
以下是引用extyg在2010-2-21 19:50:00的发言:

这是哪跟哪!

dim语句是属于用来声明变量的语句之一,它不仅可以声明一个变量的数据类型,还可以声明一个对象变量.

DimAs
  New 坏习惯 是声明变量"人"为"坏习惯"对象,它具有"坏习惯"对象的一切属性、方法和事件等。

谢谢extyg

我觉得它们挨得还是很近的呀,你看:

  1. 它们都是数据类型:它们都DIM实现声明。integet我们毫不犹豫的想到它是整数型的数据类型;而同样,我看到坏习惯时,也会去认为它也是某种数据类型。
  2. 它们都是类:如果上面的观点错误了。那么,就是说坏习惯不是数据类型,而是类,一个自定义的类;同样,我再去瞧integet时,我就会认为integet也是类,只不过而我常常称呼它为整数型的数据类型。实际上它仍是类,已被微软设计好的类,是'成品'。

观点1和2,有对1个么?

[em04]
回复

使用道具 举报

发表于 2010-2-22 00:37 | 显示全部楼层

爱疯的问题有意思,俺也来两句

应该说6楼2正确

近来在瞅javascript。里面说到 什么都是类 整型、字符串、包括数组也是

本来嘛,电脑只知0、1 怎么会知道整型、字符串是何物,肯定是有人通过xxx封装而成

回复

使用道具 举报

发表于 2010-2-22 00:44 | 显示全部楼层

对类的概念有强烈要求的是那些完全面向对象的语言

感觉,在vba中,知道些这些道理即可

回复

使用道具 举报

发表于 2010-2-22 08:42 | 显示全部楼层

爱疯还在这里纠结啊。

没必要知道那么清楚吧。会用就好了。

硬要说区别么就是类有方法、属性和事件。

回复

使用道具 举报

发表于 2010-2-22 09:15 | 显示全部楼层

一个简单,一个复杂

一个传值,一个传址

感觉类与对象(如字典)有点象

都要(/可以)用New,Set,释放用Nothing

都有方法,属性。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 09:16 , Processed in 0.318202 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表