インターフェース
Javaで抽象化を実現するもうひとつの方法は、インターフェースを使うことです。
インターフェース
とは、完全に"抽象的なクラス"であり、関連するメソッドを空のボディでグループ化するために使われる。
例
// interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void run(); // interface method (does not have a body)
}
インターフェースメソッドにアクセスするには、インターフェースが別のクラスによって「実装」(継承のようなもの) されている必要があります。implements
(代わりにextends
)インターフェースメソッドの本体は、「implement」クラスによって提供されます。
例
// Interface
interface Animal {
public void animalSound(); // interface method (does not have a body)
public void sleep(); // interface method (does not have a body)
}
// Pig "implements" the Animal interface
class Pig implements Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
public void sleep() {
// The body of sleep() is provided here
System.out.println("Zzz");
}
}
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
自分で試してみる »
インターフェースに関する注意事項:
・抽象クラスと同様、インターフェースはオブジェクトを作成するために使用することはできません。
(上記の例では、MyMainClassの中に "Animal "オブジェクトを作成することはできません)
・インターフェースメソッドには本体がありません。本体は「実装」クラスによって提供されます。
・インターフェースの実装では、そのすべてのメソッドをオーバーライドする必要があります。
・インターフェースメソッドはデフォルトではabstract
とpublic
です。
・インターフェース属性はデフォルトではpublic
、static
とfinal
です。
・インターフェースにコンストラクターを含めることはできません (オブジェクトの作成には使用できないため)。
インターフェースを使用する理由とタイミング
1) セキュリティを実現するには、特定の詳細を非表示にして、オブジェクト (インターフェース) の重要な詳細のみを表示します
2) Java は「多重継承」をサポートしていません (クラスは 1 つのスーパークラスからしか継承できません)。ただし、クラスはできるため、
インターフェースを使用して実現できます。埋め込む複数のインターフェース。ノート:複数のインターフェースを実装するには、
それらをコンマで区切ります (以下の例を参照)。
複数のインターフェース
複数のインターフェースを実装するには、それらをコンマで区切ります。
例
interface FirstInterface {
public void myMethod(); // interface method
}
interface SecondInterface {
public void myOtherMethod(); // interface method
}
class DemoClass implements FirstInterface, SecondInterface {
public void myMethod() {
System.out.println("Some text..");
}
public void myOtherMethod() {
System.out.println("Some other text...");
}
}
class Main {
public static void main(String[] args) {
DemoClass myObj = new DemoClass();
myObj.myMethod();
myObj.myOtherMethod();
}
}
自分で試してみる »