
Car הוא מושג כללי, ולכן אפשר להגדיר אותו כ-abstract. אז אי אפשר ליצור ממנו אובייקט, וכתיבת new Car() מביאה להודעת שגיאה.IDrivable.הטקסט המלא של הדקות הראשונות בהרצאה «הבדל בין Interface ל-Abstract Class» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, ההרצאה הזאת היא הרצאה הבאה בנושא של Object Oriented Programming ובהרצאה הזאת אני הולך להסביר מה זה Abstract ומה זה Interface אז בואו ניגש רגע לקוד שלנו, עכשיו אם אתם זוכרים בהתחלה בהתחלה יצרנו פה קלאס שנקרא Car והקלאס הזה ייצג כלי רכב אבל לא אמרתי בדיוק
איזה כלי רכב והקלאס הזה ייצג כתבתי Car, עכשיו Car זה כלי רכב, זה משהו כללי, זאת אומרת הCar הזה יכול להיות באותה מידה גם מכונית מרוץ יכול להיות מכונית פרטית, מכונית משפחתית, יכול להיות טנדר, יכול להיות משאית, יכול להיות כל דבר.
אבל אין פה אין פה הסבר, אין פה איזה ציון ספציפי מה הקלאס הזה מייצג. כתבתי רק שקלאס הזה הוא קלאס מסוג car, מין הגדרה כללית כזאת. עכשיו בגלל שהקלאס הזה הוא מסוג של car וזה סוג של הגדרה כללית, אז אין לו איזה משהו ספציפי שאני מדבר עליו.
זאת אומרת שאני עכשיו עושה car new car, אוקיי? יש לי פה את הקלאס של הcar שלי, ואני עושה עכשיו New Car, אני מקבל פה איזה רכב.
אבל למען האמת, כשאני מקבל פה New Car, אני לא יודע איזה רכב אני מקבל פה, אוקיי?
כי השם של ה-Class הוא Car, וCar זה משהו שאין לו ספציפיות, הוא משהו כללי. אני רוצה עכשיו להגיד מכונית מרוץ, אז אני מצפה שעכשיו יהיה לי Class שנקרא מכונית מרוץ.
אז מכונית מרוץ זה כבר משהו ספציפי, רכב זה משהו כללי. אז בגלל זה קיימת ב... קיים בדוטנט, כל הספר בדוטנט, מילה שנקראת אבסטרקט, אבסטרקט זה בתרגום לעברית זה משהו שהוא מופשט משהו שהוא לא מוחשי אוקיי אם אני אומר לכם אני יודע מה רכב הדוגמה שלנו
רכב רכב זה מילה שמייצגת כלי תחבורה מסוים אבל לא אמרתי לכם איזה סוג של רכב נתתי לכם קטגוריה אוקיי רכב רכב הזה יכול להיות מלא דברים בכלל כשאני יוצר עכשיו car, new car, אז בגלל שהקלאס הזה נקרא car ואין לו איזה משהו ספציפי, אז אני אפילו לא יודע מה אני יוצר.
אני יוצר new car, אוקיי, אבל אין פה איזה משהו מסוים. זאת אומרת, אני לא יכול ליצור עכשיו car שהשם שלו, כאילו ליצור אובייקט מסוג של car, כי הcar זה משהו שהוא כללי קצת.
אז בגלל שהוא כללי אני יכול להגדיר את הקלאס הזה בתור קלאס אבסטרקטי. קלאס אבסטרקטי הוא קלאס שאי אפשר ליצור ממנו אובייקט. אוקיי אם אנחנו ננסה לעשות את הדבר הבא כמו שאתם רואים יש פה הודעת שגיאה אם אני אנסה לעשות car new car new car my car new car אני אקבל הודעת שגיאה מה שהודעת שגיאה הזאת אומרת בסופו של דבר זה שאני לא יכול ליצור אובייקט ממשהו שהוא אבסטרקטי
אני לא יכול ליצור אובייקט ממשהו שהוא שאין לו הגדרה ספציפית אוקיי אני לא יכול זה כמו שאני אגיד אני רוצה עכשיו ליצור אובייקט מסוג של כלי כתיבה אוקיי כלי כתיבה יכול להיות מלא דברים הוא יכול להיות עט יכול להיות עיפרון יכול להיות תוש יכול להיות גיר יכול להיות מלא דברים, אז אני לא יכול להגיד ליצור אובייקט מסוג
של כלי כתיבה. כלי כתיבה זה משהו שהוא יותר כללי, הוא יותר אבסטרקטי, הוא לא משהו מוחשי. באותה מידה car במקרה הזה זה משהו שהוא טיפה אבסטרקטי.
עכשיו בעצם העובדה שאני מגדיר את הקלאס ואתו אבסטרקט, אז אני לא יכול ליצור ממנו אובייקט. אני יכול להגדיר שיש פה משתנה, מאוחר יותר אנחנו נראה איך אנחנו כן משתמשים עם המשתנה הזה, אבל אני לא יכול ליצור אובייקט מסוג של car.
אני לא יכול ליצור דבר כזה, לא יכול לעשות new car. עוד דבר נוסף שמתלווה לציון של קלאס בתור אבסטרקט נוגע לפונקציות כדוגמא. אם אנחנו עכשיו לוקחים נגיד מכונית מרוץ, בוא נגדיר רגע קלאס שנקרא לו מכונית מרוץ, נקרא לו racing car, ובוא נגדיר עוד קלאס מעליו שנקרא מיני ואן.
עכשיו כולכם מסכימים איתי שמכונית מרוץ, מאיצה יותר מהר מאשר מיני ואן. זאת אומרת הפונקציה פה אקסלרייט, האצה או תאיץ, פונקציה שמאיצה, הגוף שלה יהיה שונה בין אובייקט מסוג של מכונית מרוץ racing car לבין אובייקט מסוג של מיני ואן.
זאת אומרת מה שרשום פה זה לא יהיה רלוונטי בהכרח לזה או לזה. ומכיוון שהקלאס פה