שאלה

מנהלים: TA_nimrod, TA_Igor, TA_Adi

שלח תגובה
nahem
הודעות: 22
הצטרף: 00:59 28/10/2009

שאלה

שליחה על ידי nahem » 22:39 21/01/2010

נתון לי הקטע קוד:

A a = new A(1);
B b = new B(1);
D d = new D(1);

a = d;
b = B(a);

classes:
class A
class B extends A
class D extends B
השאלה שלי היא איך אני מתייחס ל-בי? מי בדיוק מצביע למי.. תעשו לי סדר בבקשה!
תודה!

--כדי שלא תתבלבלו תקחו את כל הסוגריים בצד שמאל ותעבירו אותם לצד ימין..

efrat
הודעות: 33
הצטרף: 00:01 25/10/2009

Re: שאלה

שליחה על ידי efrat » 00:25 22/01/2010

nahem כתב:נתון לי הקטע קוד:

A a = new A(1);
B b = new B(1);
D d = new D(1);

a = d;
b = B(a);

classes:
class A
class B extends A
class D extends B
השאלה שלי היא איך אני מתייחס ל-בי? מי בדיוק מצביע למי.. תעשו לי סדר בבקשה!
תודה!

--כדי שלא תתבלבלו תקחו את כל הסוגריים בצד שמאל ותעבירו אותם לצד ימין..
לא הצלחתי להבין את הקוד או את השאלה שלך. יש לך דוגמא אחרת אולי?

בר כהן
הודעות: 146
הצטרף: 18:24 22/10/2009

Re: שאלה

שליחה על ידי בר כהן » 01:06 22/01/2010

קוד: בחירת הכל

A a = new A(1);
B b = new B(1);
D d = new D(1);

a = d;
b = (B)a;

classes:
class A
class B extends A
class D extends B
אם קשה לך לזכור או לעקוב אחרי מה שהולך, תצייר לך טבלת ערכים [ערך/שם/סוג] ותעבוד איתה.
table.png
table.png (7.97 KiB) נצפה 1673 פעמים
בגדול, שמת בתוך a את המצביע של d (שזה תקין) ואז ניסית לשים מצביע מסוג A בתוך b (לא תקין) אבל יש קאסטינג כי אתה יודע שיש שם באמת אוביקט מסוג D
(שזה אז כן תקין), ובסוף מה שקיבלת שכל שלושת המשתנים מצביעים על אותו אוביקט, d.

nahem
הודעות: 22
הצטרף: 00:59 28/10/2009

Re: שאלה

שליחה על ידי nahem » 10:55 22/01/2010

תודה רבה אחי! עזרת לי מאוד..

שלח תגובה

חזור אל “- מבוא למדעי המחשב 2010”