logo

דריסת שיטה ב-Java

  1. הבנת הבעיה בלי לעקוף את השיטה
  2. האם נוכל לעקוף את השיטה הסטטית
  3. עומס יתר של שיטה לעומת עקיפת שיטה

אם תת-מחלקה (מחלקת ילד) בעלת אותה שיטה כמו שהוכרזה במחלקת האב, היא ידועה בשם עקיפת שיטה ב-Java .

במילים אחרות, אם תת-מחלקה מספקת את היישום הספציפי של המתודה שהוכרזה על ידי אחת ממחלקות האב שלה, היא ידועה כעקוף מתודה.

שימוש בעקיפה של שיטת Java

  • עקיפת שיטה משמשת כדי לספק יישום ספציפי של שיטה שכבר מסופקת על ידי מחלקת העל שלה.
  • דריסת שיטה משמשת לפולימורפיזם בזמן ריצה

כללים לעקיפה של שיטת Java

  1. השיטה חייבת להיות באותו שם כמו במחלקת האב
  2. השיטה חייבת להיות בעלת אותו פרמטר כמו במחלקת האב.
  3. חייבת להיות מערכת יחסים IS-A (ירושה).
כללי Java לעקוף שיטה

הבנת הבעיה בלי לעקוף את השיטה

בואו נבין את הבעיה שאנו עלולים להתמודד איתה בתוכנית אם לא נשתמש בעקיפה של שיטה.

 //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 

הבעיה היא שאני צריך לספק יישום ספציפי של שיטת run() בתת-מחלקה וזו הסיבה שאנו משתמשים בעקיפה של מתודה.


דוגמה לעקוף שיטה

בדוגמה זו, הגדרנו את שיטת הריצה בתת המחלקה כפי שהוגדרה במחלקת האב, אך יש לה יישום ספציפי כלשהו. השם והפרמטר של השיטה זהים, ויש יחס 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 משמשת בעיקר ב-Runtime Polymorphism אותו נלמד בעמודים הבאים.

 //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?

לא, כי העיקרית היא שיטה סטטית.


ההבדל בין עומס יתר של שיטה לעקיפה של שיטה ב-Java

לחץ על ההבדל בין העמסת יתר של השיטה לעקיפה


נושאים נוספים בנושא עקיפה של שיטה (לא למתחילים)

עקיפת שיטה עם שינוי גישה

בואו נראה את הרעיון של עקיפת שיטה עם משנה גישה.

טיפול בחריגים עם עקיפת שיטה

בואו נראה את הרעיון של עקיפת שיטה עם טיפול בחריגים.