Java インタフェース概要
2008/10/10 14:17Update
Java インタフェース概要、定義方法、実装(継承)方法及びそのメリットについて学びます。
インタフェースとは
Java言語のインタフェースは、機能の概要しかを記述しないもので、定数と抽象メソッドしか持てません。
もし、クラスは「機能の概要:何をするか」と「機能の実装:どうするか」の組み合わせであれば、インタフェースは「機能の概要:何をするか」を定義するだけです。
Javaインタフェースの定義
例:
public interface TestInterface {
String DEFAULT_KEY = "name"; //修飾子の付かないものも、public static finalの定数と見なす
public static final String DEFAULT_VALUE = "hello";
void print1(); //public abstract と見なす
public void print2();
//public static void print3(); //インタフェースのメソッドにstatic修飾子をつけることはできない
public abstract void print4(); //abstractが修飾可能
}
1、インタフェースの定義について
[public][abstract] + interface + インタフェース名
※1)interfaceに省略可能なpublicやabstract修飾子が使用可能です。
※2)publicが省略された場合、同じパッケージ内からしかアクセスできません。
※3)protectedやprivateをつけません
2、インタフェースのメンバー変数について
※1)すべての「変数」は「public static final」です。
※2)「public」「static」「final」修飾子のいずれかもしくは全部を省略してもかまいません。
※3)定数となりますので、初期値を設定しなければなりません。
3、インタフェースのメソッドについて
※1)すべてのメソッドはpublic abstract と見なされます。
※2)public abstract修飾子のいずれかもしくは全部を省略してもかまいません。
※3)static修飾子をつけることはできません。
※4)メソッドが本体を持つことができません。
Javaインタフェースの継承
public interface A {
public void a();
}
public interface B {
public void b();
}
親インタフェースの定義を継承するには「extends」を用います。
例:
public interface C extends A {
public void c();
}
また、インタフェース間の多重継承もできます。
例:
public interface AB extends A, B {
public void ab();
}
Javaインタフェースの実装
インターフェースはクラスによって実装(implements)されます。
例(インタフェース定義):
public interface A {
public void a();
public void aa();
}
インタフェースをクラスによって実装するには、「implements」を用います。
例(クラスによってインタフェース実装):
public class ClassA implements A{
public void a() {
System.out.println("It's a method!");
}
public void aa() {
System.out.println("It's aa method!");
}
}
また、インタフェースのメソッドの一部しか実装しない場合、クラスをabstractにする必要があります。
例:
public abstract class ClassA implements A{
public abstract void a();
public void aa() {
System.out.println("It's aa method!");
}
}
クラスの継承は一つのクラスからしかできませんが、インタフェースの実装は複数のインタフェースからできます。
そのため、継承するすべてのインタフェースのメソッドを実装する必要があります。
例:
public class ClassA implements A, B {
//implement A.a()
public void a() {
//...
}
//implement A.aa()
public void aa() {
//...
}
//implement B.b()
public void b() {
//...
}
}
インタフェースのメリット
◇ 標準化。インタフェースを実装したすべてのクラスは同じ振る舞いを得られます。
◇ 多重継承(実装)。Javaでは、クラスからの多重継承はできませんが、インタフェースならできます。
◇ 抽象化。インタフェースは「機能の概要」だけを持つ、本体を持たないもので、機能の抽象化を専念させることができます。
◇ 疎結合。インターフェース指向のプログラミングでは、利用する側は、インタフェースの実装内容を意識する必要がありません。インタフェースの実装が変わっても、利用する側は変わる必要がありませんので、各コンポーネント間の結合が疎になり、再利用性・保守性が高くなります。
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)