logo

أنواع الإرجاع المتغيرة في جافا

نظرًا لأن طبلة الأذن "تطغى" على الأذن، فإننا ندرك بسرعة أنه يمكن القيام بذلك إما بفضل أنواع البيانات المختلفة أو الوسائط التي تم تمريرها إلى وظيفة ما تعلمها المبرمج في البداية أثناء التعلم تعدد الأشكال في جاوة.  قبل JDK 5.0 لم يكن من الممكن القيام بذلك تجاوز طريقة عن طريق تغيير نوع الإرجاع. عندما نتجاوز طريقة فئة أصلية، يجب أن تكون أنواع وسيطة الاسم ونوع الإرجاع لطريقة التجاوز في الفئة الفرعية مماثلة تمامًا لطريقة الفئة الأصلية. قيل أن الطريقة الغالبة هي ثابت فيما يتعلق بنوع الإرجاع. 

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

الآن يجب أن تتساءل أيها المهوسون عن سبب استخدامك لذلك سنقوم بإدراج المزايا على النحو التالي:



  • فهو يساعد على تجنب قوالب الكتابة المربكة الموجودة في التسلسل الهرمي للفئة وبالتالي جعل التعليمات البرمجية قابلة للقراءة وقابلة للاستخدام والصيانة.
  • لدينا الحرية في الحصول على أنواع إرجاع أكثر تحديدًا عند تجاوز الأساليب.
  • المساعدة في منع ClassCastExceptions وقت التشغيل عند الإرجاع

ملحوظة: إذا قمنا بتبديل أنواع الإرجاع الأساسية والمشتقة، فلن يعمل البرنامج أعلاه. يرجى الاطلاع هذا برنامج على سبيل المثال.

مثال فئتان تستخدمان لأنواع الإرجاع

Java
// Java Program to Demonstrate Different Return Types // if Return Type in Overridden method is Sub-type // Class 1 class A { } // Class 2 class B extends A { } // Class 3 // Helper class (Base class) class Base {  // Method of this class of class1 return type  A fun()  {  // Display message only  System.out.println('Base fun()');  return new A();  } } // Class 4 // Helper class extending above class class Derived extends Base {  // Method of this class of class1 return type  B fun()  {  // Display message only  System.out.println('Derived fun()');  return new B();  } } // Class 5 // Main class public class GFG {  // Main driver method  public static void main(String args[])  {  // Creating object of class3 type  Base base = new Base();  // Calling method fun() over this object  // inside main() method  base.fun();  // Creating object of class4 type  Derived derived = new Derived();  // Again calling method fun() over this object  // inside main() method  derived.fun();  } } 

الإخراج:  

Base fun() Derived fun()

إنشاء اختبار