サブインターフェイス
日本語 | 下接続口 |
英語 | subinterface |
ふりがな | さぶいんたーふぇいす |
フリガナ | サブインターフェイス |
あるインターフェイスから継承したインターフェイス。
通常はインターフェイスからは「クラスを実装する」ものだが、クラスではなく「インターフェイスを継承する」のが、このサブインターフェイスである。
「interface インターフェイス名A extends インターフェイス名B { 実装のないメソッド }」で、「インターフェイス名B」に「実装のないメソッド」を追加した「インターフェイス名A」インターフェイスを作ることができる。この「インターフェイス名A」が「インターフェイス名B」の「サブインターフェイス」となる。
実装クラスを作る際はimplementsなのに対し、サブインターフェイスを作る際にはextendsを使用することに注意。なぜなら、サブインターフェイスはあくまでインターフェイスのため、「実装を作らない」からである。
ただし、サブインターフェイスはあまり使われない。
クラスは、複数のインターフェイスから実装することができる。この機能が、サブインターフェイスと同じ機能を提供するためである。
通常はインターフェイスからは「クラスを実装する」ものだが、クラスではなく「インターフェイスを継承する」のが、このサブインターフェイスである。
「interface インターフェイス名A extends インターフェイス名B { 実装のないメソッド }」で、「インターフェイス名B」に「実装のないメソッド」を追加した「インターフェイス名A」インターフェイスを作ることができる。この「インターフェイス名A」が「インターフェイス名B」の「サブインターフェイス」となる。
実装クラスを作る際はimplementsなのに対し、サブインターフェイスを作る際にはextendsを使用することに注意。なぜなら、サブインターフェイスはあくまでインターフェイスのため、「実装を作らない」からである。
ただし、サブインターフェイスはあまり使われない。
クラスは、複数のインターフェイスから実装することができる。この機能が、サブインターフェイスと同じ機能を提供するためである。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// ImplementedClassクラスを使用します。
ImplementedClass implementedClass = new ImplementedClass();
implementedClass.output();
implementedClass.output2();
// ImplementedClass#output()
// ImplementedClass#output2()
}
}
/**
* インターフェイス。
*/
interface Interface
{
/**
* 実装用メソッド。
*/
public void output();
}
/**
* Interfaceインターフェイスのサブインターフェイス。
*/
// サブインターフェイスは、implementsではなくextendsなのに注意してください。
// interface SubInterface implements Interface
// コンパイルエラー:
// キーワード "implements" に構文エラーがあります。正しくは "{" です。
interface SubInterface extends Interface
{
/**
* 実装用メソッド2。
*/
public void output2();
// インターフェイスなので実装は作れません。
// だからInterface#output()はここでは実装しません。
}
/**
* SubInterfaceインターフェイスの実装クラスImplementedClass。
*/
class ImplementedClass implements SubInterface
{
/**
* インターフェイスのメソッドを実装します。
*/
public void output()
{
System.out.println( "ImplementedClass#output()" );
}
/**
* インターフェイスのメソッド2を実装します。
*/
public void output2()
{
System.out.println( "ImplementedClass#output2()" );
}
}
public class Sample
{
public static void main( String[] args )
{
// ImplementedClassクラスを使用します。
ImplementedClass implementedClass = new ImplementedClass();
implementedClass.output();
implementedClass.output2();
// ImplementedClass#output()
// ImplementedClass#output2()
}
}
/**
* インターフェイス。
*/
interface Interface
{
/**
* 実装用メソッド。
*/
public void output();
}
/**
* Interfaceインターフェイスのサブインターフェイス。
*/
// サブインターフェイスは、implementsではなくextendsなのに注意してください。
// interface SubInterface implements Interface
// コンパイルエラー:
// キーワード "implements" に構文エラーがあります。正しくは "{" です。
interface SubInterface extends Interface
{
/**
* 実装用メソッド2。
*/
public void output2();
// インターフェイスなので実装は作れません。
// だからInterface#output()はここでは実装しません。
}
/**
* SubInterfaceインターフェイスの実装クラスImplementedClass。
*/
class ImplementedClass implements SubInterface
{
/**
* インターフェイスのメソッドを実装します。
*/
public void output()
{
System.out.println( "ImplementedClass#output()" );
}
/**
* インターフェイスのメソッド2を実装します。
*/
public void output2()
{
System.out.println( "ImplementedClass#output2()" );
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // ImplementedClassクラスを使用します。 ImplementedClass implementedClass = new ImplementedClass(); implementedClass.output(); implementedClass.output2(); // ImplementedClass#output() // ImplementedClass#output2() } } /** * インターフェイス。 */ interface Interface { /** * 実装用メソッド。 */ public void output(); } /** * Interfaceインターフェイスのサブインターフェイス。 */ // サブインターフェイスは、implementsではなくextendsなのに注意してください。 // interface SubInterface implements Interface // コンパイルエラー: // キーワード "implements" に構文エラーがあります。正しくは "{" です。 interface SubInterface extends Interface { /** * 実装用メソッド2。 */ public void output2(); // インターフェイスなので実装は作れません。 // だからInterface#output()はここでは実装しません。 } /** * SubInterfaceインターフェイスの実装クラスImplementedClass。 */ class ImplementedClass implements SubInterface { /** * インターフェイスのメソッドを実装します。 */ public void output() { System.out.println( "ImplementedClass#output()" ); } /** * インターフェイスのメソッド2を実装します。 */ public void output2() { System.out.println( "ImplementedClass#output2()" ); } }