English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
قبل Java 8، يمكن للواجهات أن تحتوي على متغيرات ثابتة وطرق مُعبرة عنها.
لا يمكننا تقديم تنفيذ الطريقة في الواجهة. إذا كنا نريد تقديم خليط من الطرق المُعبرة عنها (abstract methods) والطرق غير المُعبرة عنها (methods with implementation)، فإنه علينا استخدام فئة (abstract class).
public class Tester { public static void main(String []args) { LogOracle log = new LogOracle(); log.logInfo(""); log.logWarn(""); log.logError(""); log.logFatal(""); LogMySql log1 = new LogMySql(); log1.logInfo(""); log1.logWarn(""); log1.logError(""); log1.logFatal(""); } } final class LogOracle implements Logging { @Override public void logInfo(String message) { getConnection(); System.out.println("رسالة السجل : " + "معلومات"); closeConnection(); } @Override public void logWarn(String message) { getConnection(); System.out.println("رسالة السجل : " + "تحذير"); closeConnection(); } @Override public void logError(String message) { getConnection(); System.out.println("رسالة السجل : " + "خطأ"); closeConnection(); } @Override public void logFatal(String message) { getConnection(); System.out.println("رسالة السجل : " + "مُهلك"); closeConnection(); } @Override public void getConnection() { System.out.println("فتح اتصال قاعدة البيانات"); } @Override public void closeConnection() { System.out.println("إغلاق اتصال قاعدة البيانات"); } } final class LogMySql implements Logging { @Override public void logInfo(String message) { getConnection(); System.out.println("رسالة السجل : " + "معلومات"); closeConnection(); } @Override public void logWarn(String message) { getConnection(); System.out.println("رسالة السجل : " + "تحذير"); closeConnection(); } @Override public void logError(String message) { getConnection(); System.out.println("رسالة السجل : " + "خطأ"); closeConnection(); } @Override public void logFatal(String message) { getConnection(); System.out.println("رسالة السجل : " + "مُهلك"); closeConnection(); } @Override public void getConnection() { System.out.println("فتح اتصال قاعدة البيانات"); } @Override public void closeConnection() { System.out.println("إغلاق اتصال قاعدة البيانات"); } } interface Logging { String ORACLE = "Oracle_Database"; String MYSQL = "MySql_Database"; void logInfo(String message); void logWarn(String message); void logError(String message); void logFatal(String message); void getConnection(); void closeConnection(); }
نتيجة تنفيذ المثال أعلاه كالتالي:
فتح اتصال قاعدة البيانات رسالة سجل: INFO إغلاق اتصال قاعدة البيانات فتح اتصال قاعدة البيانات رسالة سجل: WARN إغلاق اتصال قاعدة البيانات فتح اتصال قاعدة البيانات رسالة سجل: ERROR إغلاق اتصال قاعدة البيانات فتح اتصال قاعدة البيانات رسالة سجل: CRITICAL إغلاق اتصال قاعدة البيانات
في المثال السابق، كل طريقة سجل لها تنفيذها الخاص.
في Java 8، تم إدخال بعض الميزات الجديدة في الواجهات - طرق افتراضية وطرق ثابتة. يمكننا كتابة تنفيذ الطريقة في واجهة Java SE 8 باستخدام كلمة المفتاح default لتحديدها.
في Java 8، يمكن تعريف أنواع من المتغيرات/الطرق في واجهة واحدة:
متن
طريقة نظريه
طريقة افتراضية
طريقة ثابتة
public class Tester { public static void main(String []args) { LogOracle log = new LogOracle(); log.logInfo(""); log.logWarn(""); log.logError(""); log.logFatal(""); LogMySql log1 = new LogMySql(); log1.logInfo(""); log1.logWarn(""); log1.logError(""); log1.logFatal(""); } } final class LogOracle implements Logging { } final class LogMySql implements Logging { } interface Logging { String ORACLE = "Oracle_Database"; String MYSQL = "MySql_Database"; void default logInfo(String message) { getConnection(); System.out.println("رسالة السجل : " + "معلومات"); closeConnection(); } void default logWarn(String message) { getConnection(); System.out.println("رسالة السجل : " + "تحذير"); closeConnection(); } void default logError(String message) { getConnection(); System.out.println("رسالة السجل : " + "خطأ"); closeConnection(); } default void logCritical(String message) { getConnection(); System.out.println("رسالة السجل : " + "مُهلك"); closeConnection(); } void static getConnection() { System.out.println("فتح اتصال قاعدة البيانات"); } void static closeConnection() { System.out.println("إغلاق اتصال قاعدة البيانات"); } }
نتيجة تنفيذ المثال أعلاه كالتالي:
فتح اتصال قاعدة البيانات رسالة سجل: INFO إغلاق اتصال قاعدة البيانات فتح اتصال قاعدة البيانات رسالة سجل: WARN إغلاق اتصال قاعدة البيانات فتح اتصال قاعدة البيانات رسالة سجل: ERROR إغلاق اتصال قاعدة البيانات فتح اتصال قاعدة البيانات رسالة سجل: CRITICAL إغلاق اتصال قاعدة البيانات
Java 9 يدعم أيضًا الطرق الخاصة والافتراضية في الواجهات، بالإضافة إلى الطرق الافتراضية.
في Java 9، يمكن تعريف أنواع مختلفة من المتغيرات/الطرق في واجهة:
متن
طريقة نظريه
طريقة افتراضية
طريقة ثابتة
طريقة خاصة
طريقة صغيرة سريعة
في هذا المثال، تم استخراج الكود المكرر إلى طرق عامة، مما يجعله يبدو أكثر بسيطةً:
public class Tester { public static void main(String []args) { LogOracle log = new LogOracle(); log.logInfo(""); log.logWarn(""); log.logError(""); log.logFatal(""); LogMySql log1 = new LogMySql(); log1.logInfo(""); log1.logWarn(""); log1.logError(""); log1.logFatal(""); } } final class LogOracle implements Logging { } final class LogMySql implements Logging { } interface Logging { String ORACLE = "Oracle_Database"; String MYSQL = "MySql_Database"; private void log(String message, String prefix) { getConnection(); System.out.println("Log Message : " + prefix); closeConnection(); } void default logInfo(String message) { log(message, "INFO"); } void default logWarn(String message) { log(message, "WARN"); } void default logError(String message) { log(message, "ERROR"); } default void logCritical(String message) { log(message, "CRITICAL"); } private static void getConnection() { System.out.println("فتح اتصال قاعدة البيانات"); } private static void closeConnection() { System.out.println("إغلاق اتصال قاعدة البيانات"); } }
نتيجة تنفيذ المثال أعلاه كالتالي:
فتح اتصال قاعدة البيانات رسالة سجل: INFO إغلاق اتصال قاعدة البيانات فتح اتصال قاعدة البيانات رسالة سجل: WARN إغلاق اتصال قاعدة البيانات فتح اتصال قاعدة البيانات رسالة سجل: ERROR إغلاق اتصال قاعدة البيانات فتح اتصال قاعدة البيانات رسالة سجل: CRITICAL إغلاق اتصال قاعدة البيانات