「インタフェース」の版間の差分
提供:AB開発Wiki
				
				
				ナビゲーションに移動検索に移動
				
				| 編集の要約なし | 編集の要約なし | ||
| 117行目: | 117行目: | ||
|   Dim ifoo = foo As IFoo |   Dim ifoo = foo As IFoo | ||
|   ifoo.Task() |   ifoo.Task() | ||
| === 同一メソッドを持つ複数のインターフェイスを実装する === | |||
|  Interface IFoo | |||
|      Sub Task() | |||
|  End Interface | |||
|  Interface IBar | |||
|      Sub Task() | |||
|  End Interface | |||
|  Class Foo | |||
|      Implements IFoo, IBar | |||
|  Public | |||
|      Sub IFoo.Task() | |||
|          System.Diagnostics.Trace.WriteLine( "Called [Foo.Task(for IFoo)]" ) | |||
|      End Sub | |||
|      Sub IBar.Task() | |||
|          System.Diagnostics.Trace.WriteLine( "Called [Foo.Task(for IBar)]" ) | |||
|      End Sub | |||
|  End Class | |||
|  Dim foo = New Foo | |||
|  Dim ifoo = foo As IFoo | |||
|  ifoo.Task() | |||
|  Dim ibar = foo As IBar | |||
|  ibar.Task() | |||
| ==COMインターフェイス== | ==COMインターフェイス== | ||
2007年10月21日 (日) 06:41時点における最新版
インタフェースとは、クラスが提供するメソッドをあらかじめ定義した関数リストのことを言います。
インタフェースはそれ単体ではインスタンス化することはできません。インスタンス化するには、派生先のクラスですべてのメソッドを実装する必要があります。
インターフェイスの派生元はインターフェイスに限られ、クラスから派生することはできません。
一つのクラスは複数のインターフェイスを実装することができます。
インターフェイスの定義
Interface Name
    [Inherits BaseInterface]
    Members
End Interface
項目
- Name
- インタフェースの名前を指定します。
- BaseInterface
- 継承するインタフェースが存在する場合に指定します。カンマ "," で区切って複数のインタフェースを多重に継承することができます(インタフェースの多重継承は未実装)。
- Members
- インタフェースが保有するメソッドを定義します。SubまたはFunctionステートメントを利用して一般のメソッドを定義するように指定します。インタフェースのメソッド定義では実装コード及び "End Sub" または "End Function" の記述は不要です。
使用方法
インターフェイスを実装してみる
Interface IFoo
    Sub Task()
End Interface
Class Foo
    Implements IFoo
Public
    Sub Task()
        System.Diagnostics.Trace.WriteLine( "Called [Foo.Task]" )
    End Sub
End Class
Dim foo = New Foo
foo.Task()
Dim ifoo = foo As IFoo
ifoo.Task()
複数のインターフェイスを実装する
Interface IFoo
    Sub Task1()
End Interface
Interface IBar
    Sub Task2()
End Interface
Class Foo
    Implements IFoo, IBar
Public
    Sub Task1()
        System.Diagnostics.Trace.WriteLine( "Called [Foo.Task1]" )
    End Sub
    Sub Task2()
        System.Diagnostics.Trace.WriteLine( "Called [Foo.Task2]" )
    End Sub
End Class
Dim foo = New Foo
Dim ifoo = foo As IFoo
ifoo.Task1()
Dim ibar = foo As IBar
ibar.Task2()
インターフェイス実装時に基底クラスのメソッドを実装取り込みする
Interface IFoo
    Sub Task()
End Interface
Class FooBase
Public
    Sub Task()
        System.Diagnostics.Trace.WriteLine( "Called [Foo.Task]" )
    End Sub
End Class
Class Foo
    Inherits FooBase
    Implements IFoo
End Class
Dim foo = New Foo
Dim ifoo = foo As IFoo
ifoo.Task()
インターフェイスメソッドを派生クラスでオーバーライドする
Interface IFoo
    Sub Task()
End Interface
Class FooBase
Public
    Virtual Sub Task()
        System.Diagnostics.Trace.WriteLine( "Not called" )
    End Sub
End Class
Class Foo
    Inherits FooBase
    Implements IFoo
Public
    Override Sub Task()
        System.Diagnostics.Trace.WriteLine( "Called [Foo.Task]" )
    End Sub
End Class
Dim foo = New Foo
Dim ifoo = foo As IFoo
ifoo.Task()
同一メソッドを持つ複数のインターフェイスを実装する
Interface IFoo
    Sub Task()
End Interface
Interface IBar
    Sub Task()
End Interface
Class Foo
    Implements IFoo, IBar
Public
    Sub IFoo.Task()
        System.Diagnostics.Trace.WriteLine( "Called [Foo.Task(for IFoo)]" )
    End Sub
    Sub IBar.Task()
        System.Diagnostics.Trace.WriteLine( "Called [Foo.Task(for IBar)]" )
    End Sub
End Class
Dim foo = New Foo
Dim ifoo = foo As IFoo
ifoo.Task()
Dim ibar = foo As IBar
ibar.Task()
COMインターフェイス
※この項目の仕様は未定です。
IUnknownインタフースから派生したインターフェイスはCOMインタフェースとして利用できます。
