
virtual ו-override.virtual, כדי לאפשר למחלקות היורשות להחליף את המימוש שלה.override, ונותנים לה גוף חדש. הפונקציה החדשה מחליפה את המימוש של האב.Tow של אובייקט מסוג BigTowTruck נכנסת לפונקציה של המחלקה הגדולה ולא לזו של האב.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Override בתכנות מונחה עצמים» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, ההרצאה הזאת תהיה ההרצאה הבאה בנושא Object Oriented Programming והיא תמשיך את ההרצאה הקודמת שעסקה בנושא של הורשה. אז ההרצאה הקודמת הסתיימה בנקודה שהיינו פה שתי קלאסים, קלאס אחד שנקרא Tow Truck שהוא יורש מקלאס Car, על הקלאס Tow Truck שזה קלאס שמייצג איזה משאית גרירה יש לו פונקציה,
פונקציה שנקראת Tow, פונקציית Tow שזה פונקציית גרירה, מגרור. עכשיו יצא מפה עוד קלאס שנקרא BigTowTruck משאית גבירה גדולה, והיא יורשת מהקלאס שנקרא TowTruck, אוקיי?
עכשיו, העניין הוא שיש לשתי הקלאסים האלה פונקציה עם שם דומה, tow, גם לפונקציה הזאת וגם לפונקציה הזאת.
עכשיו, אנחנו למדנו בהורשה שקלאס שיורש קלאס אחר מקבל ממנו את כל המשתנים שלו ואת כל הפונקציות שלו. אז לדוגמה, אם לא היינו פה את הפונקציה הזאתי, והיינו עכשיו יוצרים פה עכשיו את הקלאס הזה ביג טואו טראק ביג טואו והיינו עכשיו קוראים לפונקציה טואו אז הפונקציה של
האובייקט מהסוג הזה היא ניגשת לפונקציה פה הפונקציה הזאת היא יורשת את הקלאס הזה שנקרא טואו טראק כמו שאנחנו רואים פה וכשאנחנו קוראים עכשיו לפונקציה טואו מהנקודה הזאת בואו נמחק את זה שלא יבלבל אותנו כשאנחנו קוראים לפונקציה טואו פה אז מה שיקרה זה הפונקציה הזאתי עכשיו אם
אנחנו עושים את הדבר הבא אם אנחנו עכשיו רושמים פה עוד פונקציה ובוא נגיד שאנחנו רוצים שהפונקציה הזאתי שמתבצעת פה היא תעשה דברים מסוימים היא תבצע פעולת גרירה שרלוונטית למשאית גרירה רגילה בוא נגיד נסמן פה בהערה ונכתוב פה ביצוע פעולת
גרירה עבור משאית גרר רגילה. עכשיו מה זה אומר? כל מיני משתנים שרלוונטיים פה, בוא נגיד למשאית גרר רגילה היא תוכל, המשתנה הזה שנקרא טו קפסיטי, כמה היא יכולה לגרור, המשתנה הזה יהיה יותר נמוך מאשר פה.
אז יש פה כל מיני פעולות שמתבצעות אבל אנחנו לא רוצים שכשאנחנו קוראים לפונקציה הזאת ביקטור טראק אנחנו רוצים שתתבצע פה פעולה אחרת אנחנו רוצים שיתבצעו פה בוא נגיד ביצוע פעולת גרירה עבור משאית גרר גדולה אוקיי יש פה דברים אחרים אנחנו רוצים שהיא תגיע לנקודה הזאת שאנחנו קוראים לטואו אוקיי פה ביקטור למשאית מסעית גרר גדולה אנחנו רוצים וקוראים
לפונקציה tow לגרור אנחנו רוצים שתגיע לפונקציה הזאתי ל-tow שנמצאת פה ולא פה אז איך אנחנו עושים את זה הדרך שאנחנו עושים את זה היא באמצעות הגדרה של הפונקציה הזאתי שנמצאת בקלאס tow track שממנו אנחנו יורשים אנחנו עכשיו נמצאים בקלאס tow track והקלאס הזה מהקלאס הזה אנחנו יורשים פה קלאס הזה big tow track יורש את הקלאס הזה
עכשיו בקלאס הזה אנחנו מגדירים את הפונקציה הזאתי רושמים פה את המילה וירטואל, אוקיי? מה שהמילה הזאת בסופו של דבר אומרת זה שהקלאס הזה הוא וירטואלי. מה זה אומר וירטואלי?
זה אומר שקלאסים אחרים שיורשים מהקלאס הזה, כמו הקלאס הזה ביג טור טראק, יוכלו לשנות, יוכלו לתת שם של פונקציה עם אותו שם ולשנות את מה שמופיע בתוך הגוף של הפונקציה, אוקיי?
ואנחנו עושים את זה בצורה הבאה. קודם כל הגדרנו פה את המילה virtual בעצם העובדה שהגדרנו את המילה virtual אנחנו אומרים אוקיי כל פונקציה אחרת שתוגדר במחלקות אחרות שירשום מהמחלקה הזאת כמו המחלקה הזאת אז פה יש לנו פונקציה עם אותו שם כל פונקציה