クラスの共通ルールを定義する「インターフェース(Interface)」とは?
Javaのオブジェクト指向では、インターフェース(Interface)を使って、
複数のクラスに共通のルールや機能の枠組みを持たせることができます。
「こういう機能を実装してください」と命令書のような役割を持ちます。
インターフェースとは?
インターフェースは、メソッドの定義(名前・引数・戻り値)だけを書き、処理の中身は書かない構造です。
実装は、それを使うクラス側で行います。
基本構文
interface インターフェース名 {
戻り値の型 メソッド名(引数);
}
例:インターフェースの定義と実装
interface Animal {
void speak(); // 中身は書かない(抽象メソッド)
}
class Dog implements Animal {
public void speak() {
System.out.println("ワンワン!");
}
}
class Cat implements Animal {
public void speak() {
System.out.println("ニャーニャー!");
}
}
使用例
public class Main {
public static void main(String[] args) {
Animal a1 = new Dog();
Animal a2 = new Cat();
a1.speak(); // → ワンワン!
a2.speak(); // → ニャーニャー!
}
}
インターフェースの特徴
- クラス間で共通の仕様を定義できる
- 多重実装(複数のインターフェース)が可能
- 抽象クラスと違って継承関係に縛られない
- Java8以降は
default
メソッド(中身つき)も書ける
インターフェースと抽象クラスの違い
項目 |
インターフェース |
抽象クラス |
メソッド |
基本はすべて抽象(Java8以降は一部実装可能) |
抽象メソッド+通常のメソッドもOK |
継承関係 |
他のクラスとは関係なく実装できる |
1つのクラスからしか継承できない |
使いどころ |
共通ルールの定義・仕様書的な役割 |
基本処理+差分だけ子クラスに任せたいとき |
複数のインターフェースを実装
interface Runnable {
void run();
}
interface Flyable {
void fly();
}
class Bird implements Runnable, Flyable {
public void run() {
System.out.println("トコトコ走る");
}
public void fly() {
System.out.println("パタパタ飛ぶ");
}
}
まとめ
インターフェース(Interface)は、複数のクラスに共通のルールを定める仕組みです。
仕様の統一や柔軟な設計ができるようになるため、Javaプログラミングには欠かせない考え方です。
「implements
を使って実装する」この基本を押さえて、ぜひ実際に使ってみましょう!