Javaを学んでいて、つまずきやすいポイントの一つ(?)interfaceについて、まとめてみたいと思います。
Android でのinterfaceの例は別の記事にまとめました。
Androidアプリプログラミングで、interfaceについて理解を深めるなら、独自リスナーを作ってみるのがいい気がします。
interface について
interface の書き方。
java.lang
のRunnableがインターフェースの例です。
Runnable.java
package java.lang;
/**
* Represents a command that can be executed. Often used to run code in a
* different {@link Thread}.
*/
public interface Runnable {
/**
* Starts executing the active part of the class' code. This method is
* called when a thread is started that has been created with a class which
* implements {@code Runnable}.
*/
public void run();
}
簡単にすると
Runnable.java
public interface Runnable {
public void run();
}
こうなります。
スッキリわかるJava入門 第2版では、「抽象クラスの中の抽象クラス」という表現で説明されていたりします。
インターフェースと扱われる2つの条件
- すべてのメソッドが抽象メソッド
- 基本的にフィールドを一つも持たない
抽象メソッド
処理の中身 ( { /*...処理...*/ }
がない) メソッドのこと。
Runnable.java
public void run();
の部分。
インターフェースのフィールドについて
インターフェースでフィールドを宣言すると、 public static final
で、定数を宣言したものと扱われます。
インスタンスの生成
抽象メソッドは 必ずオーバーライドされる 必要があるので、interface
のインスタンスを生成するときには、
Runnable runnable = new Runnable() {
@Override
public void run() {
}
};
このように run()
メソッドをオーバーライドしながらインスタンスを生成することになります。
参考
- スッキリわかるJava入門 第2版
- インタフェース Runnable
- Oracle: Java: Documentation: interface