ההבדל בין Overriding ו Overloading

Anonim

Overriding לעומת Overloading

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

-> ->

מה עובר?

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

-> ->

מה זה עומס?

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

-> ->

מה ההבדל בין overriding ו Overloading?

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

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