クラス、オブジェクト、メソッド、インターフェースなどを備えた汎用プログラミング言語はありますか?クラスベースの継承を禁止しますか?
これは、Microsoft Officeや他のVBA対応ホスト(AutoCAD、Sage 300 ERPなど)、またはVB6に埋め込まれたVBA-Visual Basic for Applicationsの説明とよく似ています。とにかく「基本」の「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
存在する可能性があります。複数のインターフェースも実装します。
ただし、VB6 / VBAはクラスの継承を許可しないため、別の型から実装を継承することはできず、インターフェイスのみを継承できます。現在、これが事故であろうと、設計上の欠陥であろうと、天才の一撃であろうと、巨大なhugeい見落としであろうと、議論の余地があります。VB6 / VBA がこれを念頭に置いているかどうかは明らかではありませんが、最も確実に強制されます。
場合Goは、クラスの継承を行い、それにもかかわらず、OOP言語ではありません VB6 / VBAはだけでなく、OOP言語と考えることができなかった理由を、私は表示されません。</PreemptiveResponseToVBAHatersThatWillSayItIsNotAnOOPLanguage>
prototype
、インスタンス間で共有するパブリックメソッドとプロパティがある場合にも役立ちます。またinstanceof
、JavaScript:で演算子を適切に使用できるため便利ですif (foo instanceof Foo) { ...
。