פורסם 2011 בנובמבר 314 שנים אוקיי אז בניתי שלוש מחלקות כאשר כל אחת יורשת מהשניה כלי רכב-מכונית-מכונית ספורטמשום מה כשאני בא לפנות למחלקה העליונה ביותר מהמחלקה הנמוכה ביותר ע"י super.super.toString()הוא נותן לי שגיאה...למישהו יש מושג?public class sportcar extends car { private double engineVolume; public sportcar(double engineVolume,double maxVelocity,String model){ super(model, maxVelocity); this.engineVolume=engineVolume; } public String toString() { return super.super.toString(); } public double getEngineVolume() { return engineVolume; }}
פורסם 2011 בנובמבר 314 שנים אני לא מכיר בע"פ סינטקס של ג'אווה - אבל מה שאתה עושה בטוח לא נכון.המחלקה הזאת הרי לא יודעת (ולא צריכה לדעת!) כמה דרגות של 'הורים' יש לה. אתה לא יכול לפנות להורה של ההורה של ההורה וכו'.לצורך העניין הדרך לממש את זה תהיה לעשות בתוך מכונית ספורט super.toString ולעשות אותו דבר בכלי רכב. ואז זה יחלחל למעלה.מעבר לזה למה אתה דורס את ToString אם כל מה שאתה עושה בפנים זה לקרוא ל-ToString של ה-super?
פורסם 2011 בנובמבר 314 שנים מחבר הבעיה היא שהtoString שלהם שונה ואני לא יכול לעשות את זה ...חוץ מזה קראתי פה http://he.wikibooks.org/wiki/%D7%AA%D7%9B%D7%A0%D7%95%D7%AA_%D7%9E%D7%AA%D7%A7%D7%93%D7%9D_%D7%91-Java/%D7%94%D7%95%D7%A8%D7%A9%D7%94שאין שום בעיה להשתמש ב-super.super... רעיונות אחרים..?
פורסם 2011 בנובמבר 314 שנים אם אתה צריך להשתמש בפונקציה ששייכת למחלקת האב הראשונה ולא האב האמיתי של הפונקציה יש לך פה בעיית דזיין בכלל, ברגע שירשת ממחלקה זה אומר שהיא יורשת הכל- מה שאומר שאם אתה צריך לעקוף אותה כנראה שאתה צריך לרשת ממחלקת האב הראשונה.
פורסם 2011 בנובמבר 314 שנים מחבר אוקיי זה התרגיל שקיבלתי...עשיתי הכל בידיוק לפי מה שרשום ואני לא מצליח להבין למה אתם מתכוונים Form c:\Java2009-2010\Inheritance תרגיל 1 בהורשה 1. יש ליצור את ההיררכיה הבאה: [table] [tr] [td][/td] [/tr] [tr] [td][/td] [td] [/td] [/tr] [/table] במחלקה Vehicle: שדה private String model שדה private double maxVelocity בנאי המקבל שני ארגומנטים: String ו-double עבור שני השדת מתודה public String toString() המחזירה מחרוזת המורכבת משירשור הערך של model והערך של maxVelocity מתודה public double getMaxVelocity המחזירה את הערך של השדה maxVelocity. במחלקה Car היורשת מ-Vehicle: שדה נוסף : private double velocity. בנאי המקבל שני ארגומנטים: String, double עבור השדות model, maxVelocity . מתודה public String toString() הדורסת את המתודה toString המגיעה בהורשה , ומחזירה מחרוזת בה הערכים המשורשרים של model, maxVelocity ו- velocity מתודה נוספת public void drive(double v) המקנה לשדה velocity את הערך של הארגומנט v, בתנאי שהערך לא יהיה שלילי ולא יהיה גדול מ-maxVelocity. מתודה נוספת public void wash() המדפיסה את המחרוזת “Washing…”. במחלקה SportCar היורשת מ-Car: שדה נוסף : private double engineVolume בנאי המקבל שלושה ארגומנטים עבור model, maxVelocity ו- engineVolume. מתודה public String toString המחזירה מחרוזת המכילה שירשור של ערכי model, maxVelocity ו- engineVolume. מתודה public double getEngineVolume() המחזירה את הערך של engineVolume. במחלקה Bus היורשת מ-Vehicle: שני שדות נוספים: private double velocity,private int passengers. בנאי המקבל שלושה ארגומנטים: String, double, int עבור השדות model, maxVelocity ו – passengers. מתודה public String toString() הדורסת את המתודה toString המגיעה בהורשה , ומחזירה מחרוזת בה הערכים המשורשרים של , velocity, model, maxVelocity ו- passengers. מתודה נוספת public void drive(double v) המקנה לשדה velocity את הערך של הארגומנט v, בתנאי שהערך לא יהיה שלילי ולא יהיה גדול מ-maxVelocity. 2. בנה מחלקה Garage בה : · שלושה שדות private Car car, private SportCar sportCar, private Bus bus (הכלה). · בנאי ללא ארגומנטים בו יוצרים אוביקט מסוג Car עבור התכונה car, אוביקט מסוג SportCar עבור התכונה sportCar, ואוביקט מסוג Bus עבור התכונה bus. · מתודה public void doIt() בה קוראים למתודה drive על כל אחד משלושת השדות, ואחר מדפיסים עבור כל אחד מהם את הערך המוחזר ע"י toString שלו. · מתודה main בה יוצרים אוביקט מסוג Garage, וקוראים עליו למתודה doIt(). תבדוק מהו הפלט.
פורסם 2011 בנובמבר 314 שנים איפה רשום ש-SportCar צריכה להשתמש ב-toString של Vehicle? רק רשום שהיא צריכה לדרוס אותה.אגב: שים לב לשמות של המחלקות שלך. קראת להן car ו-sportcar, כשבתרגיל נדרשת לקרוא להן Car ו-SportCar. ג'אווה היא שפה case sensitive, ויש הבדל בין שתי הצורות (ובכלל, בשמות של מחלקות נהוג להתחיל כל מילה באות גדולה).ועוד אגב: מה שכתוב בויקיספר שגוי. אי אפשר לעשות בג'אווה super.super.
פורסם 2011 בנובמבר 314 שנים מחבר הtostring של car צריך להדפיס MaxV Velocity וMODELהtostring של sport car צריך להדפיס אותו דבר רק בלי Velocity ועם engineV ...בגלל זה אני לא יכול להשתמש בtostring של car...רעיונות?
פורסם 2011 בנובמבר 314 שנים אז צריך איכשהו לחשוף את model (נניח, להפוך אותו, או פונקציית גישה אליו, ל-protected). אין דרך אחרת.אלא אם SportCar היה אמור להדפיס גם את velocity (זה נשמע לי הגיוני).
פורסם 2011 בנובמבר 314 שנים מעניין.כשיהיה לך פתרון שתף אותנו...ע- למרות שמה שמבקשים ממך לעשות בעצם נוגד את כל המשמעות שבשבילה הורשה קיימת... אם SportCar הוא מסוג Vehicle ו-Car הרי בהכרח עליו להיות בעל הפרמטרים שלהם, ו-toString שלו צריך לשקף אותם. אחרת היית יוצר מחלקה רגילה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.