מתודות הבסיס: toString ו- equals
בירושה ב-Java, כל מחלקה שאנו כותבים יורשת באופן אוטומטי (וסמוי) ממחלקת העל העליונה ביותר - Object. כתוצאה מכך, כל אובייקט יורש מספר מתודות בסיסיות שלרוב לא יתאימו לדרישות הספציפיות שלנו, ולכן נרצה לדרוס (Override) אותן.
המתודה toString()
מתודה זו מחזירה ייצוג טקסטואלי של האובייקט מסוג String. היא מופעלת מאחורי הקלעים אוטומטית כאשר אנו מנסים להדפיס אובייקט (למשל ב-System.out.println) או משרשרים אותו למחרוזת. ברירת המחדל מדפיסה את מיקום האובייקט בזיכרון, ולכן נדרוס אותה כדי להחזיר מחרוזת קריאה המתארת את תכונות האובייקט.
המתודה equals(Object obj)
אופרטור ההשוואה הרגיל (==) בודק רק האם שתי הפניות מצביעות לאותו מיקום פיזי בזיכרון (זהות עמוקה). המתודה equals נועדה לבדוק שוויון תוכני (למשל, האם שני אובייקטים של "נקודה" הממוקמים בשני מקומות שונים בזיכרון, מחזיקים באותן קואורדינטות X ו-Y).
שלבי העבודה המקובלים לדריסת equals:
- בדיקה האם
this == obj(אם זו אותה הצבעה בזיכרון, נחזיר מידtrue). - בדיקה האם האובייקט שהתקבל הוא בכלל מאותו סוג באמצעות האופרטור
instanceof. אם לא, נחזירfalse. - המרת טיפוס (Down-casting) של הפרמטר למחלקה שלנו, כדי שנוכל לגשת לתכונות שלו.
- השוואת התכונות הרלוונטיות של
thisאל מול האובייקט המומר, והחזרת התוצאה.