interfaceとimplementについて混乱したので、具体的な例をあげて違いを把握したかったがための記事
まず二つの違いをざっくり
◆ interface(インターフェイス)とは?
→ 「こういう機能があるよ」と決めたルール(契約書)
◆ implements(実装する)とは?
→ そのルール通りに、ちゃんと中身(行動)を書くこと
具体例
インターフェイス = リモコンのボタン
public interface Switchable {
void turnOn();
void turnOff();
}
- この家電は「ONとOFFができることが約束されている」という定義だけ
- まだ中身(どうやってONにするか)は書いていない
実装1 = 各家電がリモコンのボタンに応じて動く仕組み
public class Heater implements Switchable {
public void turnOn() {
System.out.println("ヒーターの電源を入れました");
}
public void turnOff() {
System.out.println("ヒーターの電源を切りました");
}
}
- ここで
implements Switchableと書いているのが「インターフェイスを実装する」ということ - → つまり「リモコンでON/OFFできる」という約束を守って、それぞれの家電で「具体的に何をするか」を書いているということ
実装2=モニターでも同じ仕組みが使える
public class Monitor implements Switchable {
@Override
public void turnOn() {
System.out.println("モニターの電源を入れました");
}
@Override
public void turnOff() {
System.out.println("モニターの電源を切りました");
}
}
テスト用のコード例(使ってみる)
public class Main {
public static void main(String[] args) {
Switchable heater = new Heater();
Switchable monitor = new Monitor();
heater.turnOn(); // → ヒーターの電源を入れました
heater.turnOff(); // → ヒーターの電源を切りました
monitor.turnOn(); // → モニターの電源を入れました
monitor.turnOff(); // → モニターの電源を切りました
}
}
なぜインターフェイスが便利なのか??
- 共通のルールを決めておけば、いろんなクラス(家電)が同じ操作で使える
さいごに
書籍や各種記事をみていた中で、自分が一番しっくりくる内容でまとめてみました。つたない記事ですが、何か参考になれば幸いです。