Javaのインターフェースと抽象クラス

 

Javaのインターフェースと抽象クラス

1. インターフェースとは

インターフェースは、クラスが実装すべきメソッドのセットを定義する仕組みです。インターフェースを使用すると、多重継承のような柔軟な設計が可能になります。

基本構文

interface Animal {
void makeSound();
}
class Dog implements Animal {
public void makeSound() {
System.out.println("Woof!");
}
}

2. 抽象クラスとは

抽象クラスは、一部のメソッドが実装されておらず、サブクラスで実装を強制するクラスです。

abstract class Vehicle {
abstract void move();
}
class Car extends Vehicle {
void move() {
System.out.println("Car is moving.");
}
}

3. インターフェースと抽象クラスの違い

  • インターフェースはフィールドを持たず、メソッドのシグネチャのみを定義する。
  • 抽象クラスはフィールドや具体的なメソッドを持つことができる。

4. デフォルトメソッドと静的メソッド

Java 8以降、インターフェースにdefaultメソッドやstaticメソッドを定義できるようになりました。

interface Calculator {
default int add(int a, int b) {
return a + b;
}
static void showVersion() {
System.out.println("Calculator v1.0");
}
}

5. 複数のインターフェースを実装

interface Flyable {
void fly();
}
interface Swimmable {
void swim();
}
class Duck implements Flyable, Swimmable {
public void fly() {
System.out.println("Duck is flying.");
}
public void swim() {
System.out.println("Duck is swimming.");
}
}

6. インターフェースの継承

インターフェース同士も継承が可能です。

interface Animal {
void eat();
}
interface Mammal extends Animal {
void walk();
}

7. 具体的な使用例

インターフェースを使った設計パターンの例として、「ストラテジーパターン」を紹介します。

interface PaymentStrategy {
void pay(int amount);
}
class CreditCardPayment implements PaymentStrategy {
public void pay(int amount) {
System.out.println("Paid " + amount + " using Credit Card.");
}
}
class PayPalPayment implements PaymentStrategy {
public void pay(int amount) {
System.out.println("Paid " + amount + " using PayPal.");
}
}

8. まとめ

インターフェースと抽象クラスの違いを理解し、適切に使い分けることで、柔軟な設計が可能になります。

9. 演習問題

  1. Shapeインターフェースを作成し、CircleRectangleクラスで実装してください。
  2. 抽象クラスTransportを作成し、CarBicycleで拡張してください。

コメント

タイトルとURLをコピーしました