הבדל בין דריסה לעומס יתר

הבדל בין דריסה לעומס יתר
הבדל בין דריסה לעומס יתר

וִידֵאוֹ: הבדל בין דריסה לעומס יתר

וִידֵאוֹ: הבדל בין דריסה לעומס יתר
וִידֵאוֹ: איזה מק כדאי לקנות ב2022?? 2024, נוֹבֶמבֶּר
Anonim

עקיפה לעומת עומס יתר

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

מה זה עוקף?

כפי שהוזכר לעיל, מחלקה יכולה להרחיב מחלקת על או מחלקה אב, בשפות תכנות מונחה עצמים.למחלקה צאצא יכולות להיות שיטות משלה או אופציונליות להטמעות משלה לשיטות שהוגדרו כבר במחלקה האב שלה (או באחת ממחלקות האב הגדולות שלה). אז כאשר הדבר האחרון קורה, זה נקרא דחיפת שיטה. במילים אחרות, אם מחלקת הילד מספקת יישום למתודה עם אותו חתימה וסוג החזרה כמו שיטה שהוגדרה כבר באחת ממחלקות האב שלה, שיטה זו נדחקת (מוחלפת) על ידי היישום של מחלקת הילד. לכן, אם יש שיטה מדרסת במחלקה, מערכת זמן הריצה תצטרך להחליט באיזו יישום שיטה נעשה שימוש. בעיה זו נפתרת על ידי הסתכלות על סוג האובייקט המדויק המשמש להפעלתו. אם נעשה שימוש באובייקט של מחלקת האב כדי להפעיל את המתודה שנדחפה, אזי נעשה שימוש ביישום במחלקת האב. באופן דומה, אם נעשה שימוש באובייקט של כיתת הילד, נעשה שימוש ביישום של כיתת הילד. שפות תכנות מודרניות כמו Java, Eifell, C++ ו-Python מאפשרות עקיפת שיטה.

מה זה עומס יתר?

עומס יתר של שיטה היא תכונה שמספקת שפות תכנות מסוימות ליצירת יותר משיטה אחת עם אותו שם, אך עם סוגי קלט ופלט שונים. בשפות תכנות מודרניות כמו Java, C, C++ ו-VB. NET, תכונה זו זמינה. אתה יכול להעמיס על שיטה על ידי יצירת שיטה אחרת עם אותו שם אבל עם חתימת שיטה אחרת או סוג החזרה שונה (או שניהם). לדוגמה, אם יש לך method1(type1 t1) ו-method1(type2 t2) בתוך אותה מחלקה, אז הם עמוסים יתר על המידה. אז המערכת תצטרך להחליט איזה מהם להתבצע כאשר היא תיקרא. בידול זה נעשה על ידי הסתכלות על סוג הפרמטר/ים שהועברו לשיטה. אם הארגומנט הוא מסוג1, היישום הראשון נקרא, ואילו אם הוא מסוג2, היישום השני נקרא.

מה ההבדל בין עקיפה לעומס יתר?

למרות שדיפת שיטה והעמסת יתר של שיטות משמשות כדי לספק שיטה עם יישומים שונים, ישנם הבדלים מרכזיים בין שני המושגים/טכניקות הללו.קודם כל, נושאי עקיפת שיטה תמיד נשארים בתוך מחלקות שונות, בעוד נושאי עומס שיטה נשארים באותה מחלקה. זה אומר שעקיפה אפשרית רק בשפות תכנות מונחה עצמים המאפשרות ירושה, בעוד שעומס יתר יכול להיות זמין גם בשפה שאינה מונחה עצמים. במילים אחרות, אתה עוקף שיטה במחלקה העל אבל אתה מעמיס על מתודה בתוך המחלקה שלך.

הבדל נוסף הוא שלשיטות שנדחקות יש את אותו שם שיטה, חתימת שיטה וסוג ההחזרה, אבל שיטות עמוסות יתר חייבות להיות שונות בחתימה או בסוג ההחזרה (השם צריך להיות זהה). על מנת להבדיל בין שתי שיטות נדחקות, סוג האובייקט המדויק המשמש להפעלת זיהוי המתודות בשימוש, ואילו כדי להבדיל בין שתי שיטות עמוסות מדי משתמשים בסוגי הפרמטרים. הבדל מרכזי נוסף הוא שעומס יתר נפתר בזמן ההידור, בעוד שהעקיפה נפתרת בזמן הריצה.

מוּמלָץ: