המשימה
זהו התרגיל הראשון בנושא ההורשה. הוא עוסק בדבר אחד בלבד: **דריסה**. נתונה המחלקה Animal, ולה שם ופעולה sound שמחזירה מחרוזת כללית. בנה שתי מחלקות שיורשות מ-Animal: • Dog — sound שלה מחזירה Haw • Cat — sound שלה מחזירה Miau אף אחת מהן לא מוסיפה תכונות. הבנאים כבר כתובים בשבילכם ואין מה לשנות בהם — כל מה שנשאר הוא לדרוס פעולה אחת בכל מחלקה. דוגמאות: Animal בשם Rex → sound מחזיר ... Dog בשם Rex → sound מחזיר Haw Cat בשם Luna → sound מחזיר Miau הנחיות: • הבנאי של כל בן קיים רק כדי להעביר את השם לאב. כשלאב אין בנאי ריק, הבן חייב בנאי משלו שקורא ל-super — אחרת הקוד אפילו לא מתקמפל. לכן הוא נתון מראש, ואין מה לשנות בו. • getName מוגדרת פעם אחת באב ושני הבנים מקבלים אותה כמות שהיא. אין צורך להעתיק אותה. • שים לב למה שקורה במערך בסוף הפעולה הראשית: המשתנה מטיפוס Animal, אבל הפעולה שרצה היא זו של המחלקה האמיתית של האובייקט. זה הרעיון שכל הנושא בנוי עליו.
קוד הפתיחה
class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public String sound() {
return "...";
}
}
class Dog extends Animal {
public Dog(String name) {
super(name);
}
// דרוס כאן את sound כך שתחזיר Haw
}
class Cat extends Animal {
public Cat(String name) {
super(name);
}
// דרוס כאן את sound כך שתחזיר Miau
}
public class Main {
public static void main(String[] args) {
Animal a = new Animal("Rex");
System.out.println(a.sound()); // ...
Dog d = new Dog("Rex");
System.out.println(d.getName()); // Rex
System.out.println(d.sound()); // Haw
Cat c = new Cat("Luna");
System.out.println(c.sound()); // Miau
Animal[] all = { a, d, c };
for (int i = 0; i < all.length; i++) {
System.out.println(all[i].getName() + ": " + all[i].sound());
}
// Rex: ...
// Rex: Haw
// Luna: Miau
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.