יצירת אובייקטים ואחסון
הוצג| English | משמעות |
|---|---|
| constructor/kənˈstrʌktə/ | בונה (קונסטרוקטור) |
| instantiation/ˌɪnstænʃɪˈeɪʃn/ | יצירת אינסטנציה |
יצירת אובייקט חדש
- ליצירת אובייקט, השתמש ב**
new** וב构造函数 (constructor). Scanner sc = new Scanner(System.in);בונה אובייקט Scanner חדש.- היזון (Instantiation) היא פעולת יצירת אובייקט ממחלקה.
- ה构造函数 (constructor) מגדיר את המצב ההתחלתי של האובייקט.
פרמטרי ה构造函数 (Constructor) של
- ה构造函数 (constructor) יכול לקבל פרמטרים כדי לתכנן את האובייקט החדש.
new Random(42)מזרע גנרטור מקרי;new String("hi")מעתיק טקסט.- הפרמטרים תואמים לפרמטרים של ה构造函数 (constructor), לפי מיקום וסוג.
- constructors שונים (overloaded) מאפשרים לבנות אותה מחלקה בדרכים שונות.
אחסון הייחוס (Storing the reference) ב-
newמחזיר ייחוס (reference) לאובייקט; שמור אותו במשתנה מהסוג המתאים.Scanner sc = new Scanner(System.in);—scעכשיו מציין לאובייקט זה.- האובייקט נמצא בזיכרון;
scהוא רק התווית המצביעה אליו. - אם אבוד את הייחוס (אף משתנה אינו מחזיק בו), האובייקט נופך לבלתי נגיש.
שני משתנים, אובייקט אחד
- הקצאת משתנה אובייקט למשתנה אחר מעתיקה את הייחוס, ולא את האובייקט עצמו.
Scanner sc2 = sc;— עכשיוscו-sc2מצביעים על אותו Scanner.- שינוי דרך
sc2נראה גם דרךsc— מדובר באובייקט אחד. - התנהגות זו של העתק ייחוס היא מאפיין מגדיר (וגם חבולה) של אובייקטים.
new יוצר אובייקט ONE אחד ומחזיר ייחוס אליו. הקצאת משתנה זה למשתנה אחר (b = a;) מעתיקה את הייחוס, כך ששני השמות מצביעים על אותו אובייקט — ולא על העתק שני. לעומת primitive (int y = x; מעתיק את הערך). שכחת זאת מובילה להפתעות כמו "שיניתי את b, למה גם a השתנה?".
הקמה וייצוג
Random r = new Random();→rמתייחס למובן Random חדש.Random r2 = r;→r2מצביע על אותו מובן (לא נוצר מובן חדש).- שני
rו-r2משתפים כעת את מצב יצר אחד.
צור מובן עם new תוך שימוש ב-בונה (הקמה): new Scanner(System.in). new מחזיר יחוס שאחסנת במשתנה. הקצאת משתנה של מובן למשתנה אחר מעתיקה את היחוס — ולכן שניהם מתייחסים לאותו מובן (בניגוד לטיפוסים פרימיטיביים, המעתיקים את הערך).
new יוצר אובייקט אחד; = מעתיק את הייחוס.
r ו-r2 חולקים על אובייקט אחד; x ו-y הן העתקים עצמאיים.
איזה מילת מפתח יוצרת אובייקט חדש?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
new בשילוב עם בונה (constructor) מקבל את האובייקט לשימוש.
השיטה המיוחדת הנקראת לבניית אובייקט חדש היא ___ (מילה אחת).
Difficulty 1/5 · 100 coins + a small bonus on first completion today
הבונה מגדיר את האובייקט החדש.
לאחר Random r2 = r; כמה אובייקטי Random קיימים?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
העתקה מעתיקה את הייחוס, לא את האובייקט — עדיין אובייקט אחד.
העברת משתנה אובייקט למשתנה אחר (b = a) יוצרת אובייקט שני, עצמאי.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
זה מעתיק את הייחוס — שניהם מצביעים לאותו אובייקט.
עבור פרימיטיבים, int y = x; מעתיק את הערך, כך ש-x ו-y הם עצמאיים.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
פרימיטיבים מעתיקים את הערך; אובייקטים מעתיקים את הייחוס.