次の方法で共有


インターフェイスの変更点 (Visual Basic 6.0 ユーザー向け)

更新 : 2007 年 11 月

Visual Basic の定義では、インターフェイスとは、パブリック メンバのリストを定義する型です。Interface 型は、インスタンス化も実装もできません。

インターフェイスとクラス

クラスのインターフェイスは、そのクラスのパブリック メンバのリストです。Visual Basic 2008 で Interface ステートメントを使うと、パブリック メンバのリストを定義する型を宣言できます。Implements ステートメントを記述したクラスでは、インターフェイスの各メンバを実装することにより、そのインターフェイスのメンバを追加します。これは、Inherits キーワードを使った継承の実装と対照的です。継承の実装では、メンバは基本クラスから継承されるので、派生クラスにメンバを実装する必要はありません。

多くの場合に .NET Framework では、継承は、一定のサービスをアプリケーションでサポートするためにクラスで使用されます。たとえば、.NET Framework では、クラスが System.IComparable インターフェイスを実装している場合、ArrayList に格納されたそのクラスのインスタンスをランタイムで並べ替えることができます。

Visual Basic 2008 でのインターフェイスの使用の詳細については、「Visual Basic におけるインターフェイス」を参照してください。

Visual Basic 6.0

Visual Basic 6.0 では、どのクラスもインターフェイスとして動作できます。Implements ステートメント を次のように使用して、別のクラスのインターフェイスをクラスに実装できます。

' Contents of class BaseClass
Public Sub BaseMethod()
End Sub

' Contents of class DerivedClass
Implements BaseClass
Private Sub BaseClass_BaseMethod()
End Sub

クラスの個々のメンバにコードを記述する必要はありませんが、記述してもかまいません。

Visual Basic 2008

Visual Basic 2008 では、クラスとインターフェイスは明確に区別されます。クラスの宣言には Class ステートメントを使用し、インターフェイスの宣言には Interface ステートメントを使用します。クラスは、インターフェイスとして動作できません。インターフェイスとして動作するには、型の宣言に Interface キーワードを使う必要があります。インターフェイスのメンバは、実装されません。実際、End Sub などのコードをインターフェイス定義で使うことは、構文で認められません。インターフェイスのメンバは、Implements ステートメントを使ってインターフェイスを宣言したクラスに実装されます。

Interface Printable
    Sub Print()
    Property Mode() As Integer
End Interface

Public Class Tree
    Implements Printable

    Private modeValue As Integer
    Public Property Mode() As Integer Implements Printable.Mode
        Get
            Return modeValue
        End Get
        Set(ByVal Value As Integer)
            modeValue = Value
        End Set
    End Property

    Public Sub Print() Implements Printable.Print
        ' Add code to print a tree.
    End Sub
End Class

アップグレードのヒント

Visual Basic 6.0 で継承を実装する唯一の方法は、Implements ステートメントと基本クラスを使うことです。新しいバージョンの Visual Basic では、実装の継承とインターフェイスの継承という 2 つの種類の継承があります。どの種類を選択するかは、アプリケーションによります。次のことを考慮してください。

  • Inherits ステートメント による実装の継承を使うと、コードを書き加えなくても新しいクラスを作成できます。基本クラスの動作を変更する必要がある場合にだけ、コードを追加します。インターフェイスの継承を使う場合は、基本クラスの各メンバにコードを追加する必要があります。

  • インターフェイスは、複数のクラスから継承する必要がある場合に使用できます。Visual Basic 2008 では、1 つのクラスからの継承しかサポートされませんが、1 つのクラスに複数のインターフェイスを実装できます。

  • .NET Framework では、共通のプログラミング タスクを単純化する複数のインターフェイスが定義されています。たとえば、IComparableISerializableIFormattable などがあります。

  • 多くの .NET Framework インターフェイスでは、インターフェイスを実装するクラスも .NET Framework に用意されています。たとえば、Component クラスは、IComponent インターフェイスを実装するクラスです。Inherits ステートメント を使って Component から継承することにより、クラスは、コードを書くことなく IComponent インターフェイスのすべての機能を取得します。

参照

参照

Interface ステートメント (Visual Basic)

Class ステートメント (Visual Basic)

Inherits ステートメント