اینترفیس‌ها (Interfaces)

اینترفیس در جاوا: قرارداد کامل، implements و چنداینترفیسی.

اینترفیس چیست؟

قرارداد کامل — فقط امضای متدها، بدون هیچ پیاده‌سازی:

public interface Drawable {
    void draw();           ← فقط امضا
    double getArea();
}

// پیاده‌سازی با implements
public class Circle implements Drawable {
    double radius;

    @Override
    public void draw() {
        System.out.println("رسم دایره");
    }

    @Override
    public double getArea() {
        return Math.PI * radius * radius;
    }
}

interface در مقابل abstract class

ویژگیinterfaceabstract class
متدهای پیاده‌شدهفقط default (Java 8+)✓ آزادانه
فیلدهافقط ثابت (public static final)✓ هر نوع
سازنده✗✓
تعداد پیاده‌سازیچندتا!فقط یک extends

چند اینترفیس هم‌زمان!

مزیت بزرگ اینترفیس — جاوا فقط یک والد اما چندین قرارداد:

public interface Drawable {
    void draw();
}

public interface Resizable {
    void resize(double factor);
}

// هر دو را پیاده کن!
public class Image implements Drawable, Resizable {
    @Override
    public void draw() {
        System.out.println("رسم تصویر");
    }

    @Override
    public void resize(double factor) {
        System.out.println("تغییر اندازه " + factor + "x");
    }
}

اینترفیس‌های معروف جاوا

// Comparable — مقایسه برای مرتب‌سازی
public class Student implements Comparable<Student> {
    int score;

    @Override
    public int compareTo(Student other) {
        return this.score - other.score;
    }
}

// Runnable — برای Thread
public class MyTask implements Runnable {
    @Override
    public void run() {
        System.out.println("اجرا!");
    }
}

مثال واقعی: Comparable

مرتب‌سازی اشیاء با اینترفیس استاندارد:

import java.util.*;

ArrayList<Student> students = new ArrayList<>();
// ... اضافه کردن دانشجوها
Collections.sort(students);   ← با compareTo مرتب می‌شود!
قاعده: «هست یک» (is-a) → وراثت؛ «می‌تواند» (can-do) → اینترفیس. Eagle extends Bird implements Flyable

این مبحث بخشی از دوره آموزش کامل جاوا است.

ابزارهای مرتبط