インターフェース(入門と比較)
インターフェースを定義してクラスで実装し、抽象クラスとの違いを比較します。defaultメソッドと複数実装を学びます。
「インターフェース(入門と比較)」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全3レッスンが含まれています。
インターフェースとは
インターフェースは、クラスが提供する必要のあるメソッドシグネチャを列挙した契約です。DrivableやPrintableのように、クラス階層を固定せず能力を表すために使います。
コード: インターフェースを実装する
クラスはインターフェースを実装することで、特定の動作を提供することを保証します。オブジェクトをインターフェース型で参照し、宣言されたメソッドを呼び出せます。
public class Main {
// Interface that declares a capability
static interface Drivable {
void drive(); // method to implement
}
// A class implements the interface
static class Car implements Drivable {
public void drive() {
System.out.println("Car is driving");
}
}
public static void main(String[] args) {
Drivable d = new Car(); // upcast to interface
d.drive(); // runs Car's method
}
}
インターフェースと抽象クラス
抽象クラス = 共通コードを持つis-a関係。インターフェース = can-do能力。クラスは1つのクラスを継承できますが、複数のインターフェースを実装できます。これにより設計の柔軟性が保たれ、深い継承階層を避けられます。
コード: defaultメソッド
インターフェースには、コードを持つdefaultメソッドを定義できます。インターフェースを実装するクラスは、その小さな動作を自動的に継承します。
public class Main {
// Interface with a default method (has a body)
static interface Greeter {
void greet(String name);
default void sayBye() { // default provides a reusable tiny implementation
System.out.println("Bye");
}
}
static class SimpleGreeter implements Greeter {
public void greet(String name) {
System.out.println("Hello, " + name);
}
}
public static void main(String[] args) {
Greeter g = new SimpleGreeter();
g.greet("Ada");
g.sayBye(); // default method from the interface
}
}
複数のインターフェース
クラスは複数のインターフェースを同時に実装できます(例: DrivableとMaintainable)。これにより、固定されたスーパークラスの継承系列を強制せずに能力を表現できます。
コード: 複数のインターフェース
1つのクラスが両方のインターフェースを実装しています。状況に応じて、そのクラスをDrivable、Maintainable、または具象型として扱えます。
public class Main {
static interface Drivable { void drive(); }
static interface Maintainable { void maintain(); }
static class ServiceCar implements Drivable, Maintainable {
public void drive() { System.out.println("ServiceCar driving"); }
public void maintain() { System.out.println("ServiceCar maintenance"); }
}
public static void main(String[] args) {
ServiceCar s = new ServiceCar();
s.drive();
s.maintain();
}
}
インターフェースの確認
簡単な確認: Javaのインターフェースについて正しい説明はどれですか?
復習
復習: インターフェースは動作の契約を定義し、クラスがそれを実装します。小さな共有コードにはdefaultメソッドを使い、必要に応じて1つのクラスで複数の能力を組み合わせます。
よくある質問
「インターフェース(入門と比較)」レッスンは無料ですか?
はい。「インターフェース(入門と比較)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全3レッスンが含まれています。
「インターフェース(入門と比較)」で何を学びますか?
インターフェースを定義してクラスで実装し、抽象クラスとの違いを比較します。defaultメソッドと複数実装を学びます。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「インターフェース(入門と比較)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 抽象クラス
- インターフェース(入門と比較)
- アップキャスト・ダウンキャストとinstanceof