サブインターフェイス
| 日本語 | 下接続口 |
| 英語 | 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()" );
}
}




