Language متوسط

أضف تطبيقات للدوال مباشرةً في الواجهات مما يُتيح الوراثة المتعددة للسلوك.

✕ Java 7
// Need abstract class to share behavior
public abstract class AbstractLogger {
    public void log(String msg) {
        System.out.println(
            timestamp() + ": " + msg);
    }
    abstract String timestamp();
}

// Single inheritance only
public class FileLogger
    extends AbstractLogger { ... }
✓ Java 8+
public interface Logger {
    default void log(String msg) {
        IO.println(
            timestamp() + ": " + msg);
    }
    String timestamp();
}

// Multiple interfaces allowed
public class FileLogger
    implements Logger, Closeable { ... }
هل ترى مشكلة في هذا الكود؟ أخبرنا.
🔀

وراثة متعددة

يمكن للفئات تطبيق واجهات كثيرة ذات دوال افتراضية بخلاف وراثة الفئة المجردة الفردية.

📦

تطوّر الواجهة البرمجية

أضف دوالاً جديدة للواجهات دون كسر التطبيقات الموجودة.

🧩

سلوك قابل للتركيب

امزج وطابق القدرات من واجهات متعددة بحرية.

الأسلوب القديم
فئات مجردة للسلوك المشترك
الأسلوب الحديث
الدوال الافتراضية في الواجهات
منذ JDK
8
الصعوبة
متوسط
الدوال الافتراضية في الواجهات
متاح

متاح منذ JDK 8 (مارس 2014).

قبل Java 8، كانت مشاركة السلوك عبر فئات غير مترابطة تتطلب فئات مجردة مما يحدّك بالوراثة الفردية. تتيح الدوال الافتراضية للواجهات توفير تطبيقات للدوال لتتمكن الفئات من وراثة السلوك من واجهات متعددة. كان هذا أساسياً لتطوير Collections API دون كسر التطبيقات الموجودة.

مشاركة 𝕏 🦋 in