22-09-2006, 22:10
|
|
|
|
חבר מתאריך: 22.09.06
הודעות: 83
|
|
1) בדוט נט יש שני סוגי אובייקטים:
Refrence Type
Value Type
לא נתעמק בבדיוק מהם ההבדלים בין שני הסוגים, אבל הבסיס של ההבדל ביניהם הוא מקום ההקצאה שלהם בזיכרון. אובייקטים שהם ref type נשמרים ב heap, ולעומת זאת אובייקטים שהם value type נשמרים ב stack
ref type (מחלקות, למשל, הן מסוג ref), הם אובייקטים שאתה משתמש במצביע על מנת לגשת אליהם. כשאתה כותב את הקוד אתה לא מרגיש את זה, אבל ככה התוכנית שלך עובדת כשהיא רצה.
אז כשאתה עושה new למחלקה שלך, אתה בעצם מקצה לה מקום בזכרון. ונותן לאובייקט שלך את הכתובת בזכרון של בו הוא מאחסן ב heap או האובייקט הזה. (המצביע עצמו נמצא ב stack)
תוכל לשים לב למשל, שכשאתה יוצר אינסטנס של struct (שהוא value type), לא תצטרך להשתמש ב new
2) virtual ו override הם מונחים שקשורים להורשה.
יכול להיות מצב בה יש לך מחלקת בסיס מסויימת ובה פונקציה. לפונקציה הזאת יכולים להיות מימושים שונים אצל מחלקות אחרות שיורשות את מחלקת הבסיס, לכן, בשביל לאפשר שכל מחלקה שיורשת את מחקת הבסיס שלך תוכל לממש בצורה יחודית את הפונקציה, אתה מגדיר אותה בתור virtual, אבל בתוך מחלקת הבסיס, אתה לא יכול לתת לה מימוש.
כשאתה נמצא במחלקה אחרת שיורשת את מחלקת הבסיס, אתה יכול "לדרוס" את הפונקציה הוירטואלית שלך באמצעות מילת המפתח - override, ולכתוב את המימוש שלך בשביל הפונקציה.
למקרים בהם תרצה להגדיר פונקציה וירטואלית, אבל עם מימוש "בסיסי" כלשהו, אפשר להשתמש במילת המפתח abstract, שמאפשרת מימוש לפונקציה הזאת במחלקת הבסיס, אבל עדיין מחלקות שיורשות את המחלקה הזאת, יכולים לדרוס אותה עדיין..
3) הורשה קשורה למבנה ולמימוש.. לא לערכים ששמורים בתוכה.
נערך לאחרונה ע"י zeliran בתאריך 22-09-2006 בשעה 22:15.
|