הבדל מפתח - עומס מול ביטול ב-Java
תכנות מונחה עצמים (OOP) היא פרדיגמה מרכזית בפיתוח תוכנה. זוהי מתודולוגיה לעצב תוכנית באמצעות מחלקות ואובייקטים. כיתה היא תוכנית. הוא מתאר מה צריך להכיל באובייקט. הוא מגדיר את המאפיינים או התכונות ואת השיטות שמהן האובייקט צריך להיות מורכב. לכן, אובייקט הוא מופע של מחלקה. אובייקטים אלה מתקשרים עם אובייקטים אחרים. מושג מרכזי אחד של OOP הוא פולימורפיזם. זוהי היכולת של אובייקט להתנהג במספר דרכים. פולימורפיזם מסווג לשני חלקים שהם עומס יתר ומכריע.מאמר זה דן בהבדל בין שני אלה בג'אווה. ההבדל העיקרי בין עומס יתר לעקיפה ב-Java הוא שה-Overloading הוא היכולת ליצור מספר מתודות באותו שם עם יישומים שונים ו-Overriding היא לספק מימוש עבור מתודה תת-מחלקה שכבר קיימת ב- superclass.
מהו עומס יתר ב-Java?
עומס יתר היא היכולת ליצור מספר שיטות באותו שם עם יישומים שונים. עיין בקוד Java שלהלן.
איור 01: תוכנית Java שמסבירה עומס יתר עם מספר שונה של ארגומנטים
לפי התוכנית לעיל, מחלקה A מכילה שתי שיטות עם אותו שם. לשיטת הסכום הראשונה יש שני פרמטרים. לשיטת הסכום השנייה יש שלושה פרמטרים. בעת יצירת אובייקט מסוג A וקורא sum(2, 3), הוא יקרא לשיטת sum עם שני פרמטרים שהם sum(int a, int b) ומחזיר 5. בעת יצירת אובייקט מסוג A וקורא sum(2), 3, 4), הוא יקרא לשיטת הסכום האחרת עם שלושה פרמטרים שהם הסכום(int a, int b, int c) ויחזיר 9.
שם השיטה זהה אבל מספר הפרמטרים שונה. ניתן לראות שאותו אובייקט מתנהג אחרת. מושג זה ידוע בתור עומס יתר. זה מכונה גם כריכה סטטית או קומפילציה פולימורפיזם של זמן.
יכול להיות גם עומס יתר בסוגי נתונים שונים. עיין בקוד Java שלהלן.
איור 02: תוכנית Java שמסבירה עומס יתר במספר שונה של ארגומנטים
לפי התוכנית לעיל, Class A מורכב משתי שיטות עם אותו שם. השיטה sum(int a, int b) מקבלת שני ערכים שלמים. הסכום (כפול כפול b) מקבל שני ערכים כפולים. בעת יצירת האובייקט מסוג A וקורא sum(2, 3), הוא יקרא sum(int a, int b) ויחזיר את הערך 5. כאשר יקרא sum(3.4, 5.6), הוא יקרא sum(double a double ב) ולהחזיר את הערך 9.0. בדוגמה זו, לשיטות יש את אותו שם, אך סוג שונה של משתנים. זה גם עומס יתר על המידה.
מה זה עקיפה ב-Java?
ב-Java, אפשר לבנות מחלקות משנה עם מחלקות שכבר קיימות.במקום ליצור את המחלקה החדשה מההתחלה, אפשר להשתמש במאפיינים ובשיטות של המחלקה שכבר קיימת. המחלקה הקיימת היא מחלקת העל, והמחלקה הנגזרת היא תת המחלקה. כאשר תת-המחלקה מספקת יישום עבור מתודה, שכבר נמצאת ב- superclass, היא ידועה כדריסה. עיין בתוכנית Java להלן.
איור 03: תוכנית Java לעקיפה
לפי התוכנית שלמעלה, ל-Class A יש תצוגת שיטה(). Class B משתרע ממחלקה A, כך שהמאפיינים והשיטות של Class A נגישים על ידי Class B.למחלקה B יש שיטה display() עם מימוש ספציפי. כשיוצרים אובייקט מסוג A וקוראים לשיטת התצוגה, הוא ייתן את הפלט B. למרות שלמחלקה A יש שיטת תצוגה, היא נדחית משיטת התצוגה מסוג B. תת-מחלקה מיישמת שיטה שכבר קיימת במחלקת העל.
מושג זה הוא סוג של פולימורפיזם ומכונה עוקף. זה נקרא גם Late Binding, Dynamic Binding, Runtime Polymorphism.
מהם הדמיון בין עומס יתר לעקיפה ב-Java?
- שניהם סוגים של פולימורפיזם.
- בעומס יתר ועקיפה, לשיטות יש את אותו שם.
מה ההבדל בין עומס יתר לעקיפה ב-Java?
עומס מול ביטול ב-Java |
|
עומס יתר ב-Java הוא היכולת ליצור שיטות מרובות באותו שם עם יישומים שונים. | עקיפה ב-Java מספקת יישום ספציפי בשיטת תת-מחלקה לשיטה שכבר קיימת ב- superclass. |
פרמטרים | |
בעומס יתר, לשיטות יש את אותו שם אבל מספר שונה של פרמטרים או סוג אחר של פרמטרים. | בדריסה, לשיטות יש את אותו השם והפרמטרים חייבים להיות זהים. |
Themes | |
עומס יתר מתרחש בתוך המחלקה. | עקיפה מתרחשת בתוך שתי המחלקות שיש להן יחסי ירושה. |
מילים נרדפות | |
עומס יתר נקרא פולימורפיזם של זמן מהידור. | עקיפה נקראת פולימורפיזם של זמן ריצה. |
סיכום – עומס יתר לעומת עקיפה ב-Java
פולימורפיזם הוא מושג מרכזי בתכנות מונחה עצמים. הוא מספק את היכולת לאובייקט להתנהג במספר דרכים. זה יכול להיות של עומס יתר או עקיפה. עומס יתר הוא הפולימורפיזם של זמן הקומפילציה, ועקיפה הוא הפולימורפיזם של זמן הריצה. הם שימושיים בפיתוח יישומי תוכנה. ההבדל בין עקיפה לעומס יתר הוא ש-Overload היא היכולת ליצור מספר מתודות באותו שם עם יישומים שונים ו-Overriding מספקת מימוש ספציפי בשיטת תת-מחלקה למתודה שכבר קיימת ב- superclass. אפשר ליישם גם עומס יתר וגם דריסה ב-Java.
הורד את ה-PDF עומס יתר לעומת עקיפה ב-Java
ניתן להוריד את גרסת ה-PDF של מאמר זה ולהשתמש בה למטרות לא מקוונות לפי הערת ציטוט. אנא הורד כאן את גרסת ה-PDF ההבדל בין עומס יתר לעקיפה ב-Java