اینترفیسها (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
| ویژگی | interface | abstract 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این مبحث بخشی از دوره آموزش کامل جاوا است.