2010-06-29 65 views
7

我正在为VBA中的OOP(面向对象编程)构建一些材料。 任何人都可以列出VBA中可用的OOP概念吗?可用的OOP概念列表

例如,从我的阅读中,我发现:

  1. 继承是不VBA中。
  2. 封装的概念在那里,因为你可以使用访问修饰符“私人”,并建立一个公共财产。
+0

http://stackoverflow.com/documentation/vba/5357/object-oriented-vba – Slai 2016-08-14 02:15:57

回答

4

这里有一些意见我已经与OOP概念在工作时VBA制作:

  • 你不能重载在VBA方法。但是,您的一次性使用可选参数,无论好坏。
  • 您有一个无参数Class_Initialize方法,该方法在实例化对象时调用,但不能重载以处理参数。如果你想强制你的课程在没有设定特定属性的情况下不能“完全实用”,那么你必须编写自己的方式来做到这一点。
  • VB6和VBA编辑环境强制您构建“类文件”并将每个类保存在与模块不同的单独文件中。
  • 类和模块都可以有公共和私有字段。模块中的公共字段本质上是一个全局变量。
  • 模块在功能上类似于C#中的静态类。公共代码可以从应用程序中的任何位置的模块中调用。

VB6/VBA范例将类设想为封装对象的功能和属性的一种方法。在这个意义上,VB6/VBA的对象就像任何其他基本的OOP环境一样存在,并且在适当的时候应该鼓励它们的使用和设计。

但是,由于缺少几个关键的OOP特性,导致VB6/VBA在彻底实现完整的OOP设计模式时失败。

+0

VBA实际上支持接口,一个名为IFoo的抽象类可以在任何其他类中使用'Implements IFoo'实现,全部其中可以作为IFoos传递。 – 2010-06-29 17:04:44

+0

@Alex是的。我忘记了VB6中的接口,因为如果我记得,它们的使用仍然相当有限。 – 2010-06-29 17:45:48

5

VBA支持一些面向对象的概念,而不是其他的。

使用VBA,您可以创建自己的类,并且可以从这些类创建对象。但是,VBA不支持继承,并且不能真正支持用于OO语言(如C++或.NET)的术语的经典含义中的'多态性'。

VBA类支持封装和抽象。

0

VBA中的一个特殊缺点是封装了对象数组。

您可以拥有对象数组,但不能向下多个级别。 解决方法存在,例如通过使用Variant类型,但是然后松散类型安全性。 这使得使用分层对象结构很麻烦,而可能会导致代码错乱。