JAVASEインタフェース
2618 ワード
「インターフェース」(インタフェース)キーワードは抽象的な概念をより深くします.これを「純粋」抽象クラスとして想像することができます.作成者は、メソッド名、引数リスト、および戻りタイプを指定しますが、メソッドボディは指定しません.インタフェースには、基本データ型のデータメンバーも含まれていますが、デフォルトではstaticとfinalです.インタフェースは1つの形態のみを提供し、実装の詳細は提供しない.インタフェースは「私のすべてのクラスを実現するには、私の今のように見えるはずだ」と自分を説明しています.したがって、特定のインタフェースを採用したすべてのコードは、そのインタフェースに対してどのような方法が呼び出されるかを知っています.これがインタフェースのすべての意味です.したがって、インタフェースはクラスとクラスの間の「プロトコル」を確立するためによく使用されます.オブジェクト向けのプログラミング言語には、インタフェースと同じことをする「protocol」(プロトコル)というキーワードが採用されているものもあります.インタフェースを作成するには、classではなくinterfaceキーワードを使用します.クラスと同様に、interfaceキーワードの前にpublicキーワードを追加できます(ただし、インタフェースのみが同じ名前のファイル内に定義されています).あるいはそれを省略して「友好的」な状態をつくる.特定のインタフェース(またはインタフェースのセット)に一致するクラスを生成するには、implements(インプリメンテーション)キーを使用します.インタフェースはそのように見えますが、ここは具体的な仕事の詳細です.これらを除いて、私たちの他の仕事は継承と極めて似ています.
import java.util.*;
interface Instrument5 {
// Compile-time constant:
int i = 5; // static & final
// Cannot have method definitions:
void play(); // Automatically public
String what();
void adjust();
}
class Wind5 implements Instrument5 {
public void play() {
System.out.println("Wind5.play()");
}
public String what() { return "Wind5"; }
public void adjust() {}
}
class Percussion5 implements Instrument5 {
public void play() {
System.out.println("Percussion5.play()");
}
public String what() { return "Percussion5"; }
public void adjust() {}
}
class Stringed5 implements Instrument5 {
public void play() {
System.out.println("Stringed5.play()");
}
public String what() { return "Stringed5"; }
public void adjust() {}
}
class Brass5 extends Wind5 {
public void play() {
System.out.println("Brass5.play()");
}
public void adjust() {
System.out.println("Brass5.adjust()");
}
}
class Woodwind5 extends Wind5 {
public void play() {
System.out.println("Woodwind5.play()");
}
public String what() { return "Woodwind5"; }
}
public class Music5 {
// Doesn't care about type, so new types
// added to the system still work right:
static void tune(Instrument5 i) {
// ...
i.play();
}
static void tuneAll(Instrument5[] e) {
for(int i = 0; i < e.length; i++)
tune(e[i]);
}
public static void main(String[] args) {
Instrument5[] orchestra = new Instrument5[5];
int i = 0;
// Upcasting during addition to the array:
orchestra[i++] = new Wind5();
orchestra[i++] = new Percussion5();
orchestra[i++] = new Stringed5();
orchestra[i++] = new Brass5();
orchestra[i++] = new Woodwind5();
tuneAll(orchestra);
}
}