「インタフェース」の版間の差分

提供:AB開発Wiki
ナビゲーションに移動検索に移動
(ページ インターフェイスインタフェース へ移動: 表記揺れの統一)
編集の要約なし
 
(2人の利用者による、間の2版が非表示)
1行目: 1行目:
インターフェイスとはクラスが提供するメソッドをあらかじめ定義した関数リストのことを言います。ABのインターフェイスは多重継承ができる点を除けば、抽象クラスと同等の意味を持ちます。
'''インタフェース'''とは、クラスが提供するメソッドをあらかじめ定義した関数リストのことを言います。


インターフェイスはそれ単体ではインスタンス化することはできません。インスタンス化するには、派生先のクラスですべてのメソッドを実装する必要があります。
インタフェースはそれ単体ではインスタンス化することはできません。インスタンス化するには、派生先のクラスですべてのメソッドを実装する必要があります。
 
インターフェイスの派生元はインターフェイスに限られ、クラスから派生することはできません。
 
一つのクラスは複数のインターフェイスを実装することができます。


== インターフェイスの定義 ==
== インターフェイスの定義 ==
10行目: 14行目:


=== 項目 ===
=== 項目 ===
''Name''
;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()


''BaseInterface''
=== インターフェイスメソッドを派生クラスでオーバーライドする ===
: 継承するインターフェイスが存在する場合に指定します。カンマ "," で区切って複数のインターフェイスを多重に継承することができます(インターフェイスの多重継承は未実装)。
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()


''Members''
=== 同一メソッドを持つ複数のインターフェイスを実装する ===
: インターフェイスが保有するメソッドを定義します。SubまたはFunctionステートメントを利用して一般のメソッドを定義するように指定します。インターフェイスのメソッド定義では実装コード及び "End Sub" または "End Function" の記述は不要です。
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インターフェイス ==
[[IUnknownインタフース]]から派生したインターフェイスは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インタフェースとして利用できます。