Javaのインターフェースメソッドとは?抽象メソッドの基本と実装例を解説
Javaのインターフェースに定義されたメソッドは、デフォルトで抽象メソッド(abstract)として扱われます。つまり、インターフェース内のメソッドはシグネチャ(メソッド名・引数・戻り値の型)のみを持ち、処理内容であるメソッド本体は含みません。
実際の処理は、そのインターフェースを実装(implements)したクラス側で記述する必要があります。以下に具体例を示します。
サンプルコード
interface Car{
public void carSpeed();
public void sleep();
}
class Porsche implements Car{
public void carSpeed(){
System.out.println("The speed of the Porsche is too much");
}
public void sleep(){
System.out.println("Sleeping for few milliseconds");
}
}
public class Demo{
public static void main(String[] args){
Porsche my_car = new Porsche();
my_car.carSpeed();
my_car.sleep();
}
}実行結果
The speed of the Porsche is too much
Sleeping for few milliseconds
コードの解説
まず、「Car」という名前のインターフェースが定義され、そこには「carSpeed」と「sleep」という2つのメソッドが宣言されています。この時点では、どちらのメソッドも本体を持たない抽象メソッドです。
次に、「Porsche」クラスが「Car」インターフェースを実装しています。このクラス内で「carSpeed」と「sleep」の具体的な処理内容が定義されており、インターフェースでは宣言だけだったメソッドに、ここで初めて実体が与えられます。
最後に、「Demo」クラスのmainメソッド内でPorscheクラスのインスタンスが生成され、そのインスタンスを通じて「carSpeed」と「sleep」の各メソッドが呼び出されます。その結果として、コンソールには上記の2行が出力されます。
ポイントまとめ
- インターフェースのメソッドは暗黙的にpublic abstractとして扱われる
- 実装クラスは、インターフェースのすべての抽象メソッドをオーバーライドして実装する必要がある
- インターフェースは共通の契約(仕様)を定義する役割を持ち、複数のクラスで一貫したAPIを提供できる
-
Java 8におけるインターフェースの機能強化 〜デフォルトメソッドと静的メソッド〜
Java 8で導入されたインターフェースの新機能Java 8では、インターフェースに「デフォルトメソッド(default method)」という新しい概念が導入されました。この機能は後方互換性(下位互換性)を維持するために追加されたもので、既存のインターフェースを壊すことなく、Java 8の強力なラムダ式の恩恵を受けられるようにすることを目的としています。なぜデフォルトメソッドが必要だったのか例えば、従来のListやCollectionインターフェースにはforEachメソッドの宣言が存在しませんでした。ここで単純にforEachメソッドをインターフェースへ追加すると、これらのインターフェース
-
Javaのインターフェースとは?基本構文からクラスとの違いまで徹底解説
Javaのインターフェースとはインターフェースは、Javaにおける参照型の一つで、クラスとよく似た性質を持っています。その本体は抽象メソッドの集まりであり、クラスがインターフェースを実装することで、その抽象メソッドを引き継ぐ仕組みになっています。抽象メソッドに加えて、インターフェースには定数、デフォルトメソッド、静的メソッド、ネストされた型を含めることも可能です。ただし、メソッドの本体(処理内容)が存在するのは、デフォルトメソッドと静的メソッドのみです。インターフェースの記述方法はクラスと似ていますが、両者の役割は異なります。クラスがオブジェクトの属性や振る舞いを記述するのに対し、インターフェ