Javaのインターフェースを実践!複数の動作を持つロボットを作ろう
生徒
「Javaのインターフェースって、実際のプログラムでどう使うんですか?」
先生
「たとえば、ロボットのように複数の動作を持たせたいときに、インターフェースが役立ちますよ。」
生徒
「ロボットの動きってどうやって表現するんですか?コードで見てみたいです!」
先生
「それでは、Javaのインターフェースを使って、歩く・話す・飛ぶロボットを作ってみましょう!」
1. Javaインターフェースの基本をおさらい
Javaのインターフェースは、クラスに「こういう機能を持ってね」と契約のように伝えるものです。interfaceで定義されたメソッドは、実装クラス側で必ず処理内容を記述する必要があります。Javaではクラスに複数のインターフェースを実装させることができるため、多機能な構造を実現できます。
2. 複数のインターフェースを定義しよう
ここではロボットに「歩く」「話す」「飛ぶ」という動作を持たせるため、3つのインターフェースを定義します。
public interface Walkable {
void walk();
}
public interface Talkable {
void talk();
}
public interface Flyable {
void fly();
}
インターフェースの定義はとてもシンプルで、メソッドの宣言だけを行います。これらは「歩くことができる」「話すことができる」「飛ぶことができる」ことを表しています。
3. インターフェースを実装したロボットクラスを作ろう
続いて、これら3つのインターフェースを実装するMultiRobotクラスを定義してみましょう。
public class MultiRobot implements Walkable, Talkable, Flyable {
public void walk() {
System.out.println("ロボットが歩いています");
}
public void talk() {
System.out.println("ロボットが話しています");
}
public void fly() {
System.out.println("ロボットが空を飛んでいます");
}
}
このようにimplementsを使って、複数のインターフェースを同時に実装できます。Javaではクラスの多重継承はできませんが、インターフェースであれば複数の機能をまとめることが可能です。
4. ロボットを動かしてみよう
いよいよ、MultiRobotクラスの動作を確認するメインクラスを作って、Javaプログラムとして実行してみましょう。
public class Main {
public static void main(String[] args) {
MultiRobot robot = new MultiRobot();
robot.walk();
robot.talk();
robot.fly();
}
}
ロボットが歩いています
ロボットが話しています
ロボットが空を飛んでいます
このように、複数のインターフェースを組み合わせることで、ロボットにさまざまな動作を持たせることができました。
5. Javaのインターフェースが役立つ場面
このようなインターフェースの使い方は、Javaの開発において次のような場面で特に役立ちます。
- 異なるクラスに共通の処理名を持たせたいとき
- 機能の分離やモジュール化をしたいとき
- 処理の追加や切り替えを柔軟にしたいとき
- 設計の段階で機能ごとの契約を明示したいとき
たとえば「センサー付きロボット」や「AIロボット」などを作るときも、動作をインターフェースで定義しておけば、拡張が簡単になります。
6. 複数のインターフェースとポリモーフィズム
Javaでは、インターフェースを使うことでポリモーフィズム(多態性)を実現できます。たとえば、以下のようにインターフェース型で変数を扱えば、具体的なクラスに依存しない設計が可能です。
public class Controller {
public void commandToWalk(Walkable walker) {
walker.walk();
}
public void commandToTalk(Talkable talker) {
talker.talk();
}
}
public class Main {
public static void main(String[] args) {
MultiRobot robot = new MultiRobot();
Controller controller = new Controller();
controller.commandToWalk(robot);
controller.commandToTalk(robot);
}
}
このようにインターフェースを活用すると、汎用性の高いコードをJavaで簡単に実現できます。
7. Javaインターフェース設計で意識したいこと
実際のJavaプログラムでは、次の点を意識してインターフェースを設計するとより効果的です。
- 動作ごとに細かくインターフェースを分ける(単一責任原則)
- 後から新しい動作を追加しやすい構造にする
- インターフェースを通じて「できること」に注目する
Javaでのインターフェース設計は、コードの柔軟性や拡張性を高める重要な技術です。初心者のうちから、機能をうまく分けて設計する習慣を身につけましょう。