클래스 기반 상속을 허용하지 않는 클래스, 객체, 메소드, 인터페이스 등을 가진 범용 프로그래밍 언어가 있습니까?
이것은 VBA-Visual Basic for Applications, Microsoft Office 및 기타 VBA 가능 호스트 (예 : AutoCAD, Sage 300 ERP 등) 또는 VB6에 대한 설명과 매우 유사합니다. "Basic"의 "A"는 "All-purpose"를 나타내므로 "general-purpose"부분이 있습니다.
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는 클래스 상속을 허용하지 않으므로 다른 유형에서 구현 을 상속 할 수 없으며 인터페이스 만 상속 할 수 있습니다. 이것이 사고, 설계 결함, 천재의 획 또는 엄청난 추악한 감독인지 여부에 대한 논쟁은 이제 열려 있습니다. VB6 / VBA 가 이것을 마음에 새기는 지 확실하지 않지만 가장 확실하게 시행 합니다.
경우 이동은 클래스 상속을하고 그럼에도 불구하고 OOP 언어입니다하지 않습니다 VB6 / VBA가 OOP 언어로 간주뿐만 아니라 수없는 이유, 그때는 표시되지 않습니다.</PreemptiveResponseToVBAHatersThatWillSayItIsNotAnOOPLanguage>
prototype
또한 public 메소드와 인스턴스간에 공유되어야 특성이있을 때 유용합니다.instanceof
JavaScript 에서 연산자 를 올바르게 사용할 수 있기 때문에 유용합니다if (foo instanceof Foo) { ...
.