מעבר לתוכן

מתודה equals


yanivdan98

הודעות מומלצות

הי

 

משהו יכול להסביר לי למה תשובה  א היא הנכונה?

 

אני הייתי בטוח כי התשובה הנכונה היא ג, אסביר את עצמי:

 

אם יש :

 

 

 

 

 

Class A {
private int x,y;
 
}
 
class B extends A {
private int z;
 

}

 

 

 

ואם גם A וגם B דורסים את מתודת ה- equals שלהם אזי אם:

 

 A.equals( B=true

 

B.equals(A)==false

 

כך שלוא דווקא מתקיים סימטריות...

 

משהו הצליח להבין אותם?

 

 

 

http://img560.imageshack.us/img560/6716/87252171.png
 
Uploaded with ImageShack.us
קישור לתוכן
שיתוף באתרים אחרים

זה פשוט מאוד.

החוזה של המתודה equals ב-Java הוא שהיא צריכה להגדיר יחס שקילות, כלומר יחס שהוא:

1. רפלקסיבי

2. סימטרי

3. טרנזיטיבי

 

ועוד תנאי על כך שאף אובייקט אינו שווה ל-null.

 

מתודה שלא מקיימת אחד מהתנאים מנ"ל אינה מקיימת את הנדרש ממתודת equals, וזהו.זה שאתה יכול להגדיר מתודה כזו זה יפה, אבל פשוט אומר שהיא לא מתודת השוואה טובה.

קישור לתוכן
שיתוף באתרים אחרים

דריסה של מתודה סטטית? אני מניח שאפשרי (אם המתודה הדורסת היא סטטית גם), אבל אין בזה ממש טעם שכן הכבילה למתודות סטטיות היא, ובכן, סטטית.

 

נסה לקמפל תוכנית קטנה כזו ותראה אם זה מסתדר.

קישור לתוכן
שיתוף באתרים אחרים

הצטרפות לשיח

באפשרותך לשלוח הודעה כעת ולהירשם מאוחר יותר. אם ברשותך חשבון, ניתן להתחבר עכשיו לשליחת הודעה דרך חשבונך.
הערה: הודעתך דרושה לאישור הנהלה לפני הצגתה.

אורח
הוספת תגובה

×   הדבקה כטקסט עשיר.   הדבקה כטקסט רגיל במקום

  מאושרים אך ורק 75 סמייקונים.

×   הקישור שלך מוצמד אוטומטית.   הצגה כקישור במקום

×   תוכן הקודם שלכם שוחזר.   ניקוי עורך

×   You cannot paste images directly. Upload or insert images from URL.

טוען...
×
×
  • יצירת חדש...