インターフェイス (interface) の比較

宣言

C++
class MyInterface
{
public:
    virtual void Func() = 0;
};
※インターフェイスは、純粋仮想関数だけの抽象クラスと同義
C++/CLI
interface class MyInterface
{
public:
    void Func();
};
C#
interface MyInterface
{
    void Func();
}
※C#ではメンバは暗黙的にpublicとされるため、アクセス修飾子は不要
Java
interface MyInterface
{
    void Func();
}

継承 (inheritance)

C#
interface SubInterface : MyInterface
{
}
Java
interface SubInterface extends MyInterface
{
}

クラスの継承と考え方は同じです。

実装 (implement)

C++/CLI
ref class MyClass : MyInterface
{
};
C#
class MyClass : MyInterface
{
}
Java※1
class MyClass implements MyInterface
{
}

※1 Javaではインターフェイスの継承と実装を、キーワードを分けて明確に区別しています。

クラスの継承も同時に行う場合

インターフェイスの実装と同時にクラスの継承も行う場合には、その記述の順番に注意が必要です。

C#
class クラス名 : 基本クラス, インターフェイス
{
}
※基本クラスを先に記述し、カンマで区切ります。
Java
class クラス名 extends 基本クラス implements インターフェイス
{
}
※extends節を先に記述します。

参考

参考書