可用OOP概念列表

时间:2010-06-29 11:07:32

标签: oop vba excel-vba excel

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

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

  1. VBA中没有继承。
  2. 封装概念就在那里,因为您可以使用访问修饰符“private”并构建公共属性。

3 个答案:

答案 0 :(得分:5)

VBA支持一些OO概念,而不支持其他概念。

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

VBA类确实支持封装和抽象。

答案 1 :(得分:4)

以下是我在VBA中使用OOP概念时所做的一些观察:

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

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

但是,缺少几个关键的OOP功能会导致VB6 / VBA无法完全实现完整的OOP设计模式。

答案 2 :(得分:0)

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

您可以拥有对象数组,但不能超过一个级别。 存在变通方法,例如使用Variant类型但是您失去了类型安全性。 这使得使用分层对象结构变得很麻烦,尽管最终可能会出现复杂的代码。