תרגול מדעי המחשב

הכניסה להורשה: מחלקת בסיס ושני בנים

קל Java

המשימה

זהו התרגיל הראשון בנושא ההורשה. הוא עוסק בדבר אחד בלבד: **דריסה**.

נתונה המחלקה 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 ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון — כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות בדיקה חיצוני.