【发布时间】:2010-06-29 11:07:32
【问题描述】:
我正在为 VBA 中的 OOP(面向对象编程)构建一些材料。 谁能列出 VBA 中可用的 OOP 概念吗?
例如,从我的阅读中我发现:
- 继承在 VBA 中不可用。
- 封装概念已经存在,因为您可以使用访问修饰符“private”并构建公共属性。
【问题讨论】:
我正在为 VBA 中的 OOP(面向对象编程)构建一些材料。 谁能列出 VBA 中可用的 OOP 概念吗?
例如,从我的阅读中我发现:
【问题讨论】:
VBA 支持一些 OO 概念,但不支持其他概念。
使用 VBA,您可以创建自己的类,并且可以从这些类创建对象。但是,VBA 不支持继承,也不真正支持在 C++ 或 .NET 等 OO 语言中使用的术语的经典含义中的“多态性”。
VBA 类确实支持封装和抽象。
【讨论】:
以下是我在 VBA 中使用 OOP 概念时的一些观察:
Class_Initialize 方法,该方法在对象实例化时被调用,但不能重载以处理参数。如果你想在没有设置某些属性的情况下强制你的类不能“完全正常运行”,你必须编写自己的方法来做到这一点。VB6/VBA 范例将类设想为封装对象功能和属性的一种方式。从这个意义上说,VB6/VBA 的对象与任何其他基本 OOP 环境一样存在,应在适当的情况下鼓励使用和设计它们。
但是,缺少几个关键的 OOP 特性导致 VB6/VBA 无法彻底实现完整的 OOP 设计模式。
【讨论】:
Implements IFoo 实现,所有这些都可以作为 IFoos 传递。
VBA 的一个特殊缺点是对象数组的封装。
您可以拥有对象数组,但不能向下多于一层。 存在变通方法,例如通过使用 Variant 类型,但您会失去类型安全性。 这使得使用分层对象结构变得很麻烦,而您最终可能会得到令人费解的代码。
【讨论】: