「インタフェース」の版間の差分
提供:AB開発Wiki
ナビゲーションに移動検索に移動
編集の要約なし |
編集の要約なし |
||
| (2人の利用者による、間の3版が非表示) | |||
| 1行目: | 1行目: | ||
'''インタフェース'''とは、クラスが提供するメソッドをあらかじめ定義した関数リストのことを言います。 | |||
インタフェースはそれ単体ではインスタンス化することはできません。インスタンス化するには、派生先のクラスですべてのメソッドを実装する必要があります。 | |||
インターフェイスの派生元はインターフェイスに限られ、クラスから派生することはできません。 | |||
一つのクラスは複数のインターフェイスを実装することができます。 | |||
== インターフェイスの定義 == | == インターフェイスの定義 == | ||
| 10行目: | 14行目: | ||
=== 項目 === | === 項目 === | ||
;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インタフェースとして利用できます。 | |||
[[Category:言語仕様|いんたふええす]] | |||
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インタフェースとして利用できます。