可用OOP概念列表
我正在为VBA中的OOP(面向对象编程)编写一些资料。 有人能给我列出VBA中可用的OOP概念吗 例如,从我的阅读中,我发现:可用OOP概念列表,oop,vba,excel,Oop,Vba,Excel,我正在为VBA中的OOP(面向对象编程)编写一些资料。 有人能给我列出VBA中可用的OOP概念吗 例如,从我的阅读中,我发现: 继承在VBA中不可用 封装概念就在这里,因为您可以使用访问修饰符“private”并构建公共属性 VBA支持某些OO概念,而不支持其他概念 使用VBA,您可以创建自己的类,也可以从这些类创建对象。但是,VBA不支持继承,并且不真正支持在诸如C++、或.NET、等OO语言中使用的术语的古典意义的“多态”。 VBA类确实支持封装和抽象。以下是我在VBA中处理OOP概念时所做
VBA支持某些OO概念,而不支持其他概念 使用VBA,您可以创建自己的类,也可以从这些类创建对象。但是,VBA不支持继承,并且不真正支持在诸如C++、或.NET、等OO语言中使用的术语的古典意义的“多态”。
VBA类确实支持封装和抽象。以下是我在VBA中处理OOP概念时所做的一些观察:
- 不能在VBA中重载方法。然而,不管是好是坏,您都可以随意选择参数
- 您有一个无参数的
方法,该方法在实例化对象时调用,但不能重载以处理参数。如果您想在没有设置某些属性的情况下强制类不具有“完全功能”,那么您必须以自己的方式编写Class\u Initialize
- VB6和VBA编辑环境强制您构建“类文件”,并将每个类保存在单独的文件中,这与模块不同
- 类和模块都可以有公共字段和私有字段。模块中的公共字段本质上是一个全局变量
- 模块在功能上类似于C#中的静态类。可以从应用程序中的任何模块调用公共代码
然而,由于缺少几个关键的OOP功能,VB6/VBA无法完全实现完整的OOP设计模式。VBA的一个特殊缺点是封装对象数组 可以有对象数组,但不能向下移动多个级别。 解决方法是存在的,例如,通过使用变体类型,但是您会失去类型安全性。
这使得使用分层对象结构很麻烦,但最终可能会得到复杂的代码。VBA实际上支持接口,一个名为IFoo的抽象类可以在任何数量的其他类中使用
实现IFoo
,所有这些类都可以作为IFoo传递。@Alex没错。我忘记了VB6中的接口,因为如果我记得的话,它们的使用仍然非常有限。