تعدد الأشكال في Java: كيفية التحميل الزائد أو تجاوز الطرق

تعدد الأشكال في Java: كيفية التحميل الزائد أو تجاوز الطرق

طريقة التحميل الزائد والتجاوز هما الطريقتان اللتان توضح بهما Java تعدد الأشكال. يأتي تعدد الأشكال من مزيج من كلمتين يونانيتين: 'بولي' تعني العديد وصيغة المعنى 'تحويل'. لذلك ، يتيح تعدد الأشكال للطرق اتخاذ أشكال عديدة.





اتبع هذا الدليل لمعرفة كيفية التحميل الزائد أو تجاوز الطرق في Java.





ما هي طريقة التحميل الزائد؟

يشير مصطلح 'أسلوب التحميل الزائد' إلى تحديد طرق مختلفة في فئة تحمل نفس الاسم. يجب أن يكون للطرق توقيعات مختلفة. توقيع الطريقة هو مزيج من اسم الطريقة وقائمة المعلمات. لا يتضمن نوع الإرجاع.





يعرف المترجم الطريقة التي يجب استخدامها عن طريق التحقق من النوع وعدد المعلمات والترتيب الذي يتم وضعها فيه.

متعلق ب: استكشاف الوراثة في لغة برمجة جافا



يوضح أسلوب التحميل الزائد تعدد أشكال وقت الترجمة. يعني تعدد الأشكال في وقت الترجمة أن مترجم Java يربط كائنًا بوظائفه في وقت التشغيل. يتحقق المترجم من تواقيع الأسلوب لتحقيق ذلك.

يُعرف هذا النوع من تعدد الأشكال أيضًا بالربط الثابت أو المبكر.





انظر مثال طريقة التحميل الزائد أدناه:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

انتاج:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

يوضح الكود أعلاه كيف يمكنك الحصول على مكعب من أنواع مختلفة ( int و مزدوج و تطفو ) باستخدام نفس الطريقة.

بشكل عام ، يتم استخدام طريقة التحميل الزائد لتحديد طرق مماثلة مع أنواع مختلفة من المعلمات.

ما هي طريقة تجاوز؟

يشير هذا إلى تطبيق مختلف لطريقة في فئة فرعية. يجب أن تكون الطريقة قد تم تعريفها بالفعل في الفئة الأصلية.

يجب أن يكون لطريقة التجاوز (أي تلك الموجودة في الفئة الفرعية) نفس توقيع الطريقة كما هو الحال في الفئة الفائقة. قد يكون نوع الإرجاع لطريقة التجاوز هو نفسه أو نوعًا فرعيًا من النوع الموجود في الطبقة الفائقة.

يستخدم التجاوز بشكل عام لتضمين تطبيق محدد لسلوك الكائن في الفئة الفرعية.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

انتاج:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

يوضح المثال أعلاه كيف الطريقة رسالة() تم تجاوزه في الفئات الفرعية مدخرات و الودائع الثابتة . سيتم عرض رسائل مختلفة لأصحاب الحسابات المصرفية الذين لديهم حساب توفير وأولئك الذين لديهم حساب الوديعة الثابتة.

متعلق ب: ما تحتاج لمعرفته حول استخدام الجمل في جافا

تجدر الإشارة أيضًا إلى أن تجاوز الطريقة يوضح تعدد أشكال وقت التشغيل أو إرسال الأسلوب الديناميكي. هذا يعني أن الطريقة التي سيتم استدعاؤها يتم حلها في وقت التشغيل بدلاً من التحويل البرمجي.

لتجنب تجاوز طريقة ما ، استخدم الكلمة الأساسية أخير .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

عندما تحاول فئة فرعية تجاوزها ، سيحدث خطأ في الترجمة.

من الناحية المثالية ، يجب أن تكون جميع الطرق التي يتم استدعاؤها داخل المنشئ أخير . هذا لتجنب أي تغييرات غير مقصودة قد تسببها الفئات الفرعية.

في بعض الأحيان ، قد تحتاج إلى الوصول إلى طريقة تم تجاوزها ضمن طريقة overriding. يمكنك استخدام الكلمة ممتاز متبوعًا بالعامل النقطي ( . ) واسم الطريقة في مثل هذه الحالة.

تأمل الطبقة الفائقة حيوان .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

يوجد أدناه فئة فرعية تسمى سمكة ، هذا يلغي نقل() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

انتاج:

الحصول على ملكية windows 10 تنزيل مجاني
I can swim.
I can move.

عند تجاوز طريقة ما ، يجب أن تضع في اعتبارك أيضًا معدِّل الوصول المستخدم. يجب أن يكون للمُعدِّل في الفئة الفرعية نفس مستوى الرؤية أو أعلى منه في الفئة الأساسية. على سبيل المثال ، إذا تم تعريف الطريقة في الفئة الأساسية على أنها محمي ، فيمكن أن تكون طريقة التجاوز محمي أو عام .

رمز بسيط مع تعدد الأشكال

يعد تجاوز الأسلوب والحمل الزائد مهمين لتبسيط الكود ، والشفرة البسيطة هي ممارسة جيدة.

لماذا ا؟ تخيل قاعدة بيانات معقدة تحتوي على مداخل وعموم أكثر من محطة جراند سنترال. تخيل الآن أن خطأً مدمرًا يبدأ في تدمير عملك الشاق أمام عينيك. أنت بحاجة إلى عزل مصدر العدوى ، وتحتاج إلى القيام بذلك بسرعة.

حظًا سعيدًا ، لم تبسط الكود الخاص بك ... أنت الآن على وشك الحصول على درس حقيقي في التشفير. يعد استخدام هياكل البيانات الفعالة والقيام بكل ما في وسعك لتقصير التعليمات البرمجية (مثل وضع DRY في الاعتبار) هو أفضل دفاع لك ضد مثل هذا الموقف.

بعد ذلك في قائمة تعلم Java ، يجب أن تعمل مع المصفوفات. إنها هياكل بيانات مهمة تُستخدم لتخزين مجموعات من نقاط البيانات.

يشارك يشارك سقسقة بريد الالكتروني كيفية إنشاء وتنفيذ العمليات على المصفوفات في Java

تعلم جافا؟ دع المصفوفات تتعامل مع بياناتك بسهولة.

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • جافا
  • دروس الترميز
نبذة عن الكاتب جيروم ديفيدسون(تم نشر 22 مقالة)

جيروم كاتب في MakeUseOf. يغطي مقالات عن البرمجة و Linux. إنه أيضًا متحمس للعملات المشفرة ويحتفظ دائمًا بعلامات تبويب في صناعة التشفير.

المزيد من Jerome Davidson

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك