VBScriptにおけるクラスの疑似継承機能を使用するには、SfcMini.ClassEx オブジェクトを利用します。添付のサンプルスクリプト『ClassEx.vbs』を例にとって説明します。
 擬似継承機能を利用するためには、クラスにパブリックプロパティ『this』を実装してください。基底になるクラス(ここの例では、GrandParentClass)では、クラスのコンストラクタで

Set this=Me


と指定します。このクラスを継承するためには(例:ParentClass)、やはり『this』を実装しこれに、SfcMini.ClassExオブジェクトを当てはめます。さらに、継承する元になるGrandParentClassクラスのインスタンスを一つ作成し、継承元の this プロパティと、Me プロパティの両方を SfcMini.ClassExオブジェクトに対して指定してください。

Set Parent=New ParentClass
Set this=CreateObject("SfcMini.ClassEx")
Call this(Me,Parent.this)




これで、ParentClass の this にアクセスすることで、ParentClass 内、GrandParentClass 内のどちらのパブリックプロパティ・パブリック関数にアクセスすることが出来ます。さらに継承を行って、例のように ChildClass を作成することが出来ます。

サンプルコード

Option Explicit
Dim myself,history
Set myself=New ChildClass
history=myself.this.gpFunc()+vbCrLf
history=history+myself.this.pFunc()+vbCrLf
history=history+myself.this.cFunc()+vbCrLf
MsgBox history,vbOkOnly,"ClassEx test"

Class GrandParentClass
  Public this
  Private Sub Class_Initialize()
    Set this=Me
  End Sub
  Public Function gpFunc()
    gpFunc="gpFunc()"
  End Function
End Class

Class ParentClass
  Public this
  Private GrandParent
  Private Sub Class_Initialize()
    Set GrandParent=New GrandParentClass
    Set this=CreateObject("SfcMini.ClassEx")
    Call this(Me,GrandParent.this)
  End Sub
  Public Function pFunc()
    pFunc="pFunc()"
  End Function
End Class

Class ChildClass
  Public this
  Private Parent
  Private Sub Class_Initialize()
    Set Parent=New ParentClass
    Set this=CreateObject("SfcMini.ClassEx")
    Call this(Me,Parent.this)
  End Sub
  Public Function cFunc()
    On Error Resume Next
    cFunc="cFunc(), "+this.cpFunc() 'This causes an error
    On Error Goto 0
    cFunc="cFunc(), "+cpFunc()
  End Function
  Private Function cpFunc()
    cpFunc="cpFunc()"
  End Function
End Class


















































実行例
ClassEx