interface
| 日本語 | 接続口 |
| 英語 | interface |
| ふりがな | いんたーふぇーす、いんたーふぇいす |
| フリガナ | インターフェース、インターフェイス |
インターフェイスを宣言するための予約語。
「interface インターフェイス名 { /** メソッドの宣言 */ }」と記述することで「インターフェイス名」というインターフェイスが宣言される。
classを使用しないという点で、「クラスとインターフェイスは異なるもの」ということを示している。
同様に、classでは継承にextendsを使用するが、インターフェイスでは継承ではなく「実装」を行いその際にはimplementsという予約語を使用する。
「interface インターフェイス名 { /** メソッドの宣言 */ }」と記述することで「インターフェイス名」というインターフェイスが宣言される。
classを使用しないという点で、「クラスとインターフェイスは異なるもの」ということを示している。
同様に、classでは継承にextendsを使用するが、インターフェイスでは継承ではなく「実装」を行いその際にはimplementsという予約語を使用する。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// ImplementedClassクラスを使用してみます。
ImplementedClass implementedClass = new ImplementedClass();
implementedClass.output();
// ImplementedClass#output()
// 実装クラスからインターフェイスへのアップキャストは
// 可能です。その際、ポリモーフィズムが適用されるので
// インターフェイスから実装クラスのメソッドを呼び出す
// ことができます。
Interface interfaceOfimplementedClass = implementedClass;
interfaceOfimplementedClass.output();
// ImplementedClass#output()
// インターフェイスには実装がないため、インスタンスを
// 作成できません。
// interfaceOfimplementedClass = new Interface();
// コンパイルエラー:
// Interface のインスタンスを生成することができません。
}
}
/**
* Interfaceインターフェイスを宣言します。
*/
interface Interface
{
/**
* 実装用メソッドを用意します。
*/
public void output();
// 実装はありません。
// もしinterfaceのメソッドに実装があると、
// 以下のようなコンパイルエラーが
// 発生します。
// public void output2(){}
// コンパイルエラー:
// 抽象メソッドは本体を指定しません。
}
/**
* Interfaceインターフェイスの実装クラスImplementedClassを宣言します。
*/
class ImplementedClass implements Interface
{
/**
* インターフェイスのメソッドを実装します。
* 方法はオーバーライドと同じ。
* 同名、同引数、同戻り値のメソッドを作ってください。
*/
public void output()
{
System.out.println( "ImplementedClass#output()" );
}
// インターフェイスを実装する場合には、すべてのメソッドを
// 実装する必要があります。たとえば、output()メソッドを
// 作り忘れると、以下のコンパイルエラーが発生します。
// コンパイルエラー:
// クラスは継承された抽象メソッド Interface.output() をインプリメントする必要があります。
}
public class Sample
{
public static void main( String[] args )
{
// ImplementedClassクラスを使用してみます。
ImplementedClass implementedClass = new ImplementedClass();
implementedClass.output();
// ImplementedClass#output()
// 実装クラスからインターフェイスへのアップキャストは
// 可能です。その際、ポリモーフィズムが適用されるので
// インターフェイスから実装クラスのメソッドを呼び出す
// ことができます。
Interface interfaceOfimplementedClass = implementedClass;
interfaceOfimplementedClass.output();
// ImplementedClass#output()
// インターフェイスには実装がないため、インスタンスを
// 作成できません。
// interfaceOfimplementedClass = new Interface();
// コンパイルエラー:
// Interface のインスタンスを生成することができません。
}
}
/**
* Interfaceインターフェイスを宣言します。
*/
interface Interface
{
/**
* 実装用メソッドを用意します。
*/
public void output();
// 実装はありません。
// もしinterfaceのメソッドに実装があると、
// 以下のようなコンパイルエラーが
// 発生します。
// public void output2(){}
// コンパイルエラー:
// 抽象メソッドは本体を指定しません。
}
/**
* Interfaceインターフェイスの実装クラスImplementedClassを宣言します。
*/
class ImplementedClass implements Interface
{
/**
* インターフェイスのメソッドを実装します。
* 方法はオーバーライドと同じ。
* 同名、同引数、同戻り値のメソッドを作ってください。
*/
public void output()
{
System.out.println( "ImplementedClass#output()" );
}
// インターフェイスを実装する場合には、すべてのメソッドを
// 実装する必要があります。たとえば、output()メソッドを
// 作り忘れると、以下のコンパイルエラーが発生します。
// コンパイルエラー:
// クラスは継承された抽象メソッド Interface.output() をインプリメントする必要があります。
}
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// ImplementedClassクラスを使用してみます。
ImplementedClass implementedClass = new ImplementedClass();
implementedClass.output();
// ImplementedClass#output()
// 実装クラスからインターフェイスへのアップキャストは
// 可能です。その際、ポリモーフィズムが適用されるので
// インターフェイスから実装クラスのメソッドを呼び出す
// ことができます。
Interface interfaceOfimplementedClass = implementedClass;
interfaceOfimplementedClass.output();
// ImplementedClass#output()
// インターフェイスには実装がないため、インスタンスを
// 作成できません。
// interfaceOfimplementedClass = new Interface();
// コンパイルエラー:
// Interface のインスタンスを生成することができません。
}
}
/**
* Interfaceインターフェイスを宣言します。
*/
interface Interface
{
/**
* 実装用メソッドを用意します。
*/
public void output();
// 実装はありません。
// もしinterfaceのメソッドに実装があると、
// 以下のようなコンパイルエラーが
// 発生します。
// public void output2(){}
// コンパイルエラー:
// 抽象メソッドは本体を指定しません。
}
/**
* Interfaceインターフェイスの実装クラスImplementedClassを宣言します。
*/
class ImplementedClass implements Interface
{
/**
* インターフェイスのメソッドを実装します。
* 方法はオーバーライドと同じ。
* 同名、同引数、同戻り値のメソッドを作ってください。
*/
public void output()
{
System.out.println( "ImplementedClass#output()" );
}
// インターフェイスを実装する場合には、すべてのメソッドを
// 実装する必要があります。たとえば、output()メソッドを
// 作り忘れると、以下のコンパイルエラーが発生します。
// コンパイルエラー:
// クラスは継承された抽象メソッド Interface.output() をインプリメントする必要があります。
}




