- فهم المشكلة دون تجاوز الأسلوب
- هل يمكننا تجاوز الطريقة الثابتة
- التحميل الزائد للطريقة مقابل تجاوز الطريقة
إذا كانت الفئة الفرعية (الفئة الفرعية) لها نفس الطريقة المعلن عنها في الفئة الأصل، فإنها تُعرف باسم تجاوز الأسلوب في جافا .
بمعنى آخر، إذا كانت فئة فرعية توفر التنفيذ المحدد للطريقة التي تم الإعلان عنها بواسطة إحدى فئتها الأصلية، فإن ذلك يُعرف باسم تجاوز الطريقة.
استخدام طريقة جافا لتجاوز
- يتم استخدام تجاوز الطريقة لتوفير التنفيذ المحدد للطريقة التي يتم توفيرها بالفعل بواسطة فئتها الفائقة.
- يتم استخدام تجاوز الطريقة لتعدد الأشكال في وقت التشغيل
قواعد لتجاوز أسلوب جافا
- يجب أن يكون للطريقة نفس الاسم الموجود في الفئة الأصل
- يجب أن تحتوي الطريقة على نفس المعلمة الموجودة في الفئة الأصل.
- يجب أن تكون هناك علاقة IS-A (الميراث).
فهم المشكلة دون تجاوز الأسلوب
دعونا نفهم المشكلة التي قد نواجهها في البرنامج إذا لم نستخدم طريقة تجاوز.
//Java Program to demonstrate why we need method overriding //Here, we are calling the method of parent class with child //class object. //Creating a parent class class Vehicle{ void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike extends Vehicle{ public static void main(String args[]){ //creating an instance of child class Bike obj = new Bike(); //calling the method with child class instance obj.run(); } }اختبره الآن
انتاج:
Vehicle is running
المشكلة هي أنه لا بد لي من توفير تطبيق محدد لطريقة التشغيل () في فئة فرعية ولهذا السبب نستخدم تجاوز الطريقة.
مثال على طريقة التجاوز
في هذا المثال، قمنا بتعريف طريقة التشغيل في الفئة الفرعية كما هو محدد في الفئة الأصل ولكن لها بعض التنفيذ المحدد. اسم ومعلمة الطريقة متماثلان، وهناك علاقة IS-A بين الفئات، لذلك هناك تجاوز للطريقة.
//Java Program to illustrate the use of Java Method Overriding //Creating a parent class. class Vehicle{ //defining a method void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike2 extends Vehicle{ //defining the same method as in the parent class void run(){System.out.println('Bike is running safely');} public static void main(String args[]){ Bike2 obj = new Bike2();//creating object obj.run();//calling method } }اختبره الآن
انتاج:
Bike is running safely
مثال حقيقي لتجاوز طريقة Java
فكر في سيناريو حيث يكون البنك فئة توفر وظيفة للحصول على معدل الفائدة. ومع ذلك، فإن سعر الفائدة يختلف باختلاف البنوك. على سبيل المثال، يمكن لبنوك SBI وICICI وAXIS تقديم أسعار فائدة بنسبة 8% و7% و9%.
يتم استخدام تجاوز طريقة Java في الغالب في تعدد الأشكال في وقت التشغيل والذي سنتعلمه في الصفحات التالية.
//Java Program to demonstrate the real scenario of Java Method Overriding //where three classes are overriding the method of a parent class. //Creating a parent class. class Bank{ int getRateOfInterest(){return 0;} } //Creating child classes. class SBI extends Bank{ int getRateOfInterest(){return 8;} } class ICICI extends Bank{ int getRateOfInterest(){return 7;} } class AXIS extends Bank{ int getRateOfInterest(){return 9;} } //Test class to create objects and call the methods class Test2{ public static void main(String args[]){ SBI s=new SBI(); ICICI i=new ICICI(); AXIS a=new AXIS(); System.out.println('SBI Rate of Interest: '+s.getRateOfInterest()); System.out.println('ICICI Rate of Interest: '+i.getRateOfInterest()); System.out.println('AXIS Rate of Interest: '+a.getRateOfInterest()); } }اختبره الآن
Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9
هل يمكننا تجاوز الطريقة الثابتة؟
لا، لا يمكن تجاوز الطريقة الثابتة. يمكن إثبات ذلك من خلال تعدد الأشكال في وقت التشغيل، لذلك سنتعرف عليه لاحقًا.
لماذا لا يمكننا تجاوز الطريقة الثابتة؟
وذلك لأن الطريقة الثابتة مرتبطة بالفئة بينما طريقة المثيل مرتبطة بكائن. ينتمي الثابت إلى منطقة الفصل، والمثيل ينتمي إلى منطقة الكومة.
هل يمكننا تجاوز طريقة جافا الرئيسية؟
لا، لأن الرئيسي هو طريقة ثابتة.
الفرق بين التحميل الزائد للطريقة وتجاوز الطريقة في Java
انقر فوقي لمعرفة الفرق بين طريقة التحميل الزائد والتجاوز
المزيد من المواضيع حول تجاوز الطريقة (ليس للمبتدئين)
تجاوز الأسلوب باستخدام معدّل الوصولدعونا نرى مفهوم تجاوز الطريقة باستخدام معدّل الوصول.
معالجة الاستثناءات مع تجاوز الطريقةدعونا نرى مفهوم تجاوز الطريقة مع معالجة الاستثناءات.