对象的概念,
类封装了一类事物,类的实例叫做对象
类需要实例化为对象,才能使用,例如:
class1是一个class名
dim object1 as class1
set object1 = New class1
object1.属性 = 属性值
object1.方法1 参数
Instancing 属性
设置一个值,确定能否在工程之外创建公共类的实例。如果可以,如何实现。运行时无效。
Instancing 属性设置如下:
设置 描述
1 (缺省)私有。不允许其它应用程序访问关于类的类型库信息,也不能创建该类的实例。私有对象只能在自己的部件中使用。
工程类型不同,实例属性缺省也不同。只有对于Standard Exe工程中的类模块,私有才是缺省的。
当在 ActiveX Exe 工程或ActiveX DLL工程中插入一个新的类模块时,Instancing 属性的缺省值是 MultiUse。当在 ActiveX 控件工程中插入一个新的类模块时,Instancing 属性的缺省值是 PublicNotCreatable。
2 PublicNotCreatable。只有在自己的部件首先创建了对象的前提下,其它应用程序才能应用此类的对象。不能用 CreateObject 函数或 New 操作符来创建类对象。
3 SingleUse。允许其它应用程序从这个类创建对象,但客户创建的该类的每个对象都启动部件的一个新的实例。在 ActiveX DLL 工程中是不允许的。
4 GlobalSingleUse。类似于 SingleUse ,除了此类的各种属性和方法可以象简单的全局函数那样被调用。在 ActiveX DLL 工程中是不允许的。
5 MultiUse。允许其它应用程序从这个类创建对象。部件的一个实例可提供按此方式创建的任意数目的对象。
6 GlobalMultiUse。类似于 MultiUse,只附加了一点:这个类的各种属性和方法可以象简单的全局函数那样被调用。该类的实例不需要显式创建,因为它会自动创建。
比如AcitveX DLL中至少要有一个Class的Instancing 属性为5 MultiUse,可在调用此DLL的程序中创建此类的对象;
当某类事物或操作可以按某些共同点抽象为一个整体,并且需要多次使用时,就需要使用类模块;
对象是有生存期的,并且同一个类的各个实例是各自独立的(普通模块里的东西在程序运行期间一直存在,而且是全局的,只有一份);
使用类要耗费更多的资源,效率也比较低
类是面向对象程序设计的基础,VB中的类不是真正意义上的类。他提供了属性方法事件等但是不能真正实现继承。类是从数据类型的结构发展而来的结构是一种复杂的数据类型类不仅可以存储数据还可以对数据进行处理这样代码的封装性可以得到极大的提高,由于类可以继承所以它能够实现代码的重用。如果你打算用类那么直接.net比较好
给部件添加类
部件和使用 Visual Basic 编写的其它应用程序只有一点不同:即部件工程至少有一个公共类,该公共类使客户端应用程序能够创建对象。
和其它 Visual Basic 应用程序一样,部件也可以有大量的类模块用于封装其内部功能。如果允许客户端创建一个类的实例,且由该类产生的对象可被客户端操作,则该应用程序就是一个部件。
创建新的类
可以从“工程”菜单选择“添加类模块”、“添加用户控件”或“添加用户文档”来定义一个新的公共类。“工程”菜单中的其它选项允许添加应用程序中要用到的对象,但只有 UserControls、UserDocuments 和类模块才能定义公共类。
所添加的每一个公共类都将作为对象模型中的一种公共对象的蓝本。可以通过设定类名、定义类的接口和设置 Instancing 属性(有时是 Public 属性)来确定如何从该类创建对象。
Name 属性
要仔细挑选类名。类名应当简短而又具有描述性,应使用每个首字母都大写的完整单词构成─ 例如,BusinessRule。
类名与部件名组合产生一个完整限定类名,也称之为编程 ID 或 ProgID。例如,由 Finance 部件提供的 BusinessRule 类的完整限定类名是 Finance.BusinessRule。
本章前面的“命名的学问”,概述了给类、属性和方法命名的规则。
定义接口
一个类的缺省接口由类中所定义的属性和方法组成,这将在本章后面的“给类添加属性和方法”详述。
类的缺省接口是调入接口,调入接口在“多态性、接口、类型库和 GUIDs”中说明。也可以按照“给类添加事件”中所描述的添加调出接口或事件。
Visual Basic 在部件编译后创建类型库,且类型库中包含了关于类模块的缺省接口和调出接口的信息。
详细信息 可以按照“通过接口的实现提供多态性”中所描述的为一个类实现附加调入接口。
Public 或 Instancing 属性
UserControl 类具有 Public 属性,确定该类是公共的还是私有的。UserDocument 类总是公共的。这将在深入介绍 ActiveX 控件和文档的章节中介绍,即“建立 ActiveX 控件”和“建立 ActiveX 文档”。
类模块的公共生命期更复杂,由 Instancing 属性控制。对部件要提供给其它应用程序的每一个类,应将其 Instancing 属性设置为除 Private 以外的任何值。这将在相关的主题“ActiveX 部件提供的类的实例化”中详述。
没有必要把所有的类都设为公共的;如果存在只在部件内使用的对象,可以将这个类模块的 Instancing 属性设置为 Private。(对于 UserControl,则设置 Public 属性为 False)。