是否有带有类,对象,方法,接口等的通用编程语言,这些语言不允许基于类的继承?
这读起来很像VBA的描述,它是嵌入在Microsoft Office和其他启用VBA的主机(例如AutoCAD,Sage 300 ERP等)甚至VB6中的VBA-应用程序的Visual Basic。无论如何,“基本”的“ A”代表“通用”,因此存在“通用”部分。
VB6 / VBA具有类(以及对象),方法和接口-您可以ISomething
在类模块中定义一个接口,如下所示:
Option Explicit
Public Sub DoSomething()
End Sub
然后有另一个类可以做到这一点:
Option Explicit
Implements ISomething
Private Sub ISomething_DoSomething()
'implementation here
End Sub
这样的类,不公开成员,只能通过其ISomething
接口访问-而且很可能会有数十种不同的实现ISomething
,因此OOP VBA代码完全可以实现多态,并且对于给定的类来说是完全合法的也可以实现多个接口。
但是,VB6 / VBA不允许类继承,因此您不能从其他类型继承实现,只能从其接口继承。现在,这是意外,设计缺陷,天才之举还是巨大的丑陋监督,都值得商debate。尚不清楚VB6 / VBA是否会牢记这一点,但绝对可以执行。
如果Go不进行类继承并且仍然是OOP语言,那么我不明白为什么VB6 / VBA也不能被视为OOP语言。</PreemptiveResponseToVBAHatersThatWillSayItIsNotAnOOPLanguage>
prototype
也是当你有公共的方法和应该实例之间共享性质是有用的。这也很有用,因为它允许您instanceof
在JavaScript:中正确使用运算符if (foo instanceof Foo) { ...
。