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

提供: AB開発Wiki
移動先:案内検索
(+Category:言語仕様)
1行目: 1行目:
'''インタフェース'''とは、クラスが提供するメソッドをあらかじめ定義した関数リストのことを言います。ABのインタフェースは多重継承ができる点を除けば、抽象クラスと同等の意味を持ちます。
+
'''インタフェース'''とは、クラスが提供するメソッドをあらかじめ定義した関数リストのことを言います。
  
 
インタフェースはそれ単体ではインスタンス化することはできません。インスタンス化するには、派生先のクラスですべてのメソッドを実装する必要があります。
 
インタフェースはそれ単体ではインスタンス化することはできません。インスタンス化するには、派生先のクラスですべてのメソッドを実装する必要があります。
 +
 +
インターフェイスの派生元はインターフェイスに限られ、クラスから派生することはできません。
 +
 +
一つのクラスは複数のインターフェイスを実装することができます。
  
 
== インターフェイスの定義 ==
 
== インターフェイスの定義 ==
16行目: 20行目:
 
;Members
 
;Members
 
:インタフェースが保有するメソッドを定義します。SubまたはFunctionステートメントを利用して一般のメソッドを定義するように指定します。インタフェースのメソッド定義では実装コード及び "End Sub" または "End Function" の記述は不要です。
 
:インタフェースが保有するメソッドを定義します。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()
  
 
==COMインターフェイス==
 
==COMインターフェイス==
[[IUnknownインタフース]]から派生したインターフェイスはCOMインタフェースとして利用できます。
+
※この項目の仕様は未定です。
  
 +
[[IUnknownインタフース]]から派生したインターフェイスはCOMインタフェースとして利用できます。
 +
 
[[Category:言語仕様|いんたふええす]]
 
[[Category:言語仕様|いんたふええす]]

2007年10月21日 (日) 06:36時点における版

インタフェースとは、クラスが提供するメソッドをあらかじめ定義した関数リストのことを言います。

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

インターフェイスの派生元はインターフェイスに限られ、クラスから派生することはできません。

一つのクラスは複数のインターフェイスを実装することができます。

インターフェイスの定義

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()

COMインターフェイス

※この項目の仕様は未定です。

IUnknownインタフースから派生したインターフェイスはCOMインタフェースとして利用できます。