Javaのimplementsキーワードの使い方を完全ガイド!インターフェース実装を初心者向けに解説
生徒
「Javaのインターフェースって、どうやって使うんですか?クラスに何か書かないといけないんですか?」
先生
「Javaでは、インターフェースを使うにはimplementsというキーワードを使ってクラスに実装する必要があるよ。」
生徒
「implements?extendsとは違うんですか?」
先生
「いいところに気づいたね。implementsとextendsは使い方が違うんだ。今日はJavaのimplementsキーワードについて詳しく説明するよ!」
1. Javaのimplementsとは?
Javaのimplementsは、インターフェースをクラスに実装するときに使うキーワードです。Javaでは、クラスがインターフェースの仕様に従ってメソッドを実装する場合、implementsを使います。
このキーワードは、インターフェースの抽象メソッドをクラスで定義するときに必要になります。Javaでは、1つのクラスが複数のインターフェースをimplementsすることも可能です。
2. Javaでインターフェースを実装する基本構文
Javaのimplementsの基本構文は以下のようになります。
public interface Animal {
void speak();
}
public class Dog implements Animal {
@Override
public void speak() {
System.out.println("ワンワン!");
}
}
Dogクラスは、Animalインターフェースをimplementsしており、speak()メソッドの中身を自分で定義しています。インターフェースのメソッドは抽象メソッドなので、必ずオーバーライド(上書き)する必要があります。
3. Javaで複数のインターフェースを実装する方法
Javaのクラスは、複数のインターフェースを同時にimplementsすることが可能です。これは、Javaが「多重継承」をインターフェースで実現するための仕組みです。
public interface Flyable {
void fly();
}
public interface Swimmable {
void swim();
}
public class Duck implements Flyable, Swimmable {
@Override
public void fly() {
System.out.println("バサバサと空を飛ぶ");
}
@Override
public void swim() {
System.out.println("スイスイと泳ぐ");
}
}
バサバサと空を飛ぶ
スイスイと泳ぐ
DuckクラスはFlyableとSwimmableの2つのインターフェースを実装しており、それぞれのメソッドを自分で定義しています。
4. Javaのimplementsとextendsの違い
Javaでは、extendsはクラスの継承、implementsはインターフェースの実装に使います。次のような違いがあります。
- extends:1つの親クラスだけを継承可能(単一継承)
- implements:複数のインターフェースを実装可能(多重実装)
そのため、柔軟な設計や拡張性のあるコードを目指す場合には、インターフェースとimplementsの活用が非常に重要です。
5. 実際のJavaコードでimplementsを使ってみよう
以下はJavaのimplementsキーワードを使って、インターフェースを実装する完全な例です。
public interface Calculator {
int add(int a, int b);
int subtract(int a, int b);
}
public class SimpleCalculator implements Calculator {
@Override
public int add(int a, int b) {
return a + b;
}
@Override
public int subtract(int a, int b) {
return a - b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new SimpleCalculator();
System.out.println("加算結果: " + calc.add(5, 3));
System.out.println("減算結果: " + calc.subtract(5, 3));
}
}
加算結果: 8
減算結果: 2
このように、Javaではインターフェースを使って、仕様に基づいた柔軟な実装が可能になります。
6. implementsを使うときの注意点
Javaでimplementsを使うときの注意点をいくつか紹介します。
- すべての抽象メソッドをオーバーライドする必要がある
- クラスがabstractの場合は、オーバーライドしなくてもOK(そのサブクラスで実装すればよい)
- defaultメソッドやstaticメソッドは実装しなくてもOK
たとえば、以下のようなdefaultメソッドがある場合:
public interface Logger {
default void log(String message) {
System.out.println("ログ: " + message);
}
}
log()メソッドはそのまま使うことができますが、必要であればオーバーライドも可能です。
7. Javaの開発現場でも使われるimplementsの実例
実際のJava開発では、ListやRunnableなど、さまざまな標準インターフェースをimplementsすることがあります。たとえば、スレッド処理で有名なRunnableの実装は以下のようになります:
public class MyTask implements Runnable {
@Override
public void run() {
System.out.println("別スレッドで処理中");
}
}
このように、Javaの世界ではimplementsが非常によく使われています。インターフェースとimplementsの理解は、Javaプログラミングにおいて欠かせない要素です。