القيم المُعادة والتحميل الزائد
تعلّم عبارات return، والإعادة المبكرة، والتحميل الزائد للدوال حسب عدد المعلمات وأنواعها. يتضمن ذلك عروضًا توضيحية لـ varargs واختيار الدالة المحمّلة بشكل زائد.
القيم المُعادة والتحميل الزائد درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 3 دروس في المجموع.
نظرة عامة
الهدف: إتقان عبارات الإرجاع والتحميل الزائد للدوال. سترون الإرجاع المبكر، أي عبارات الحراسة، والتحميل الزائد حسب العدد والنوع، وعرضًا قصيرًا لـ varargs.
الإرجاع والحراسة
الإرجاع يرسل قيمة إلى المستدعي وينهي الدالة. وتبقي عبارات الحراسة، أي الإرجاع المبكر، الشيفرة بسيطة عبر معالجة الحالات الخاصة أولًا.
public class Main {
// Double an integer and return the result
static int doubleIt(int x) {
return x * 2;
}
// Return a label using a simple early-return pattern (guard clause)
static String parity(int n) {
if (n % 2 == 0) {
return "even"; // early return ends the method here
}
return "odd"; // otherwise this path executes
}
public static void main(String[] args) {
System.out.println("doubleIt(7) = " + doubleIt(7));
System.out.println("parity(10) = " + parity(10));
System.out.println("parity(11) = " + parity(11));
}
}
عمليات الإرجاع المتعددة
يؤدي الإرجاع المبكر عند وجود إدخال غير صالح إلى تجنّب التداخل العميق. هنا، تعيد القسمة على صفر القيمة 0 وفق سياسة بسيطة، وستتعلمون الاستثناءات لاحقًا.
public class Main {
// Safe integer division with simple validation
static int safeDiv(int num, int den) {
if (den == 0) {
return 0; // simple policy: return 0 if denominator is zero
}
return num / den; // normal path
}
public static void main(String[] args) {
System.out.println("safeDiv(8, 2) = " + safeDiv(8, 2));
System.out.println("safeDiv(5, 0) = " + safeDiv(5, 0));
}
}
التحميل الزائد: العدد
التحميل الزائد يعني استخدام اسم الدالة نفسه مع قائمة معاملات مختلفة. ويُعد تغيير عدد المعاملات تحميلًا زائدًا صالحًا.
public class Main {
// Overload 1: max of two numbers
static int max(int a, int b) {
return (a > b) ? a : b;
}
// Overload 2: max of three numbers (different parameter COUNT)
static int max(int a, int b, int c) {
int m = (a > b) ? a : b;
return (m > c) ? m : c;
}
public static void main(String[] args) {
System.out.println("max(3, 9) = " + max(3, 9));
System.out.println("max(3, 9, 5) = " + max(3, 9, 5));
}
}
التحميل الزائد: الأنواع
يتيح التحميل الزائد حسب النوع إعادة استخدام اسم واحد لعمليات مترابطة. وتُرقّى الوسائط الرقمية المختلطة إلى توقيع المطابقة الأكثر تحديدًا.
public class Main {
// Overload for integers
static int add(int a, int b) {
return a + b;
}
// Overload for doubles (different parameter TYPES)
static double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
System.out.println("add(2, 3) = " + add(2, 3)); // calls int version
System.out.println("add(2.5, 3.5) = " + add(2.5, 3.5)); // calls double version
System.out.println("add(2, 3.5) = " + add(2, 3.5)); // numeric promotion chooses double version
}
}
التحميل الزائد: varargs
تجمع Varargs (int...) صفرًا أو أكثر من الوسائط. ويفضّل حل التحميل الزائد تطابقًا دقيقًا لا يستخدم varargs عندما يكون متاحًا.
public class Main {
// Specific overload for two ints
static int sum(int a, int b) {
return a + b;
}
// Varargs overload for many ints
static int sum(int... nums) {
int s = 0;
for (int i = 0; i < nums.length; i = i + 1) s = s + nums[i];
return s;
}
public static void main(String[] args) {
// Exact match beats varargs
System.out.println("sum(4, 5) = " + sum(4, 5)); // picks (int,int)
System.out.println("sum(1,2,3,4) = " + sum(1, 2, 3, 4)); // uses varargs
}
}
التحقق من التحميل الزائد
تحقق سريع: أي زوج يمكن أن يكون تحميلًا زائدًا صالحًا داخل فئة واحدة؟
مراجعة والخطوة التالية
مراجعة: استخدمتم return والإرجاع المبكر، وأنشأتم تحميلًا زائدًا صالحًا حسب العدد والنوع، وتدرّبتم على varargs. الخطوة التالية: نطاق المتغيرات وعمرها للدوال والمتغيرات.
الأسئلة الشائعة
هل درس «القيم المُعادة والتحميل الزائد» مجاني؟
نعم — نص درس «القيم المُعادة والتحميل الزائد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 3 دروس في المجموع.
ماذا ستتعلم في «القيم المُعادة والتحميل الزائد»؟
تعلّم عبارات return، والإعادة المبكرة، والتحميل الزائد للدوال حسب عدد المعلمات وأنواعها. يتضمن ذلك عروضًا توضيحية لـ varargs واختيار الدالة المحمّلة بشكل زائد. تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.
كم من الوقت يستغرق درس «القيم المُعادة والتحميل الزائد»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تعريف الدوال والمعلمات
- القيم المُعادة والتحميل الزائد
- النطاق ودورة الحياة