Square מכילה width, color, בונה, ואת paint/Paint ו-perimeter/Perimeter. Rectangle יורשת מ-Square, מוסיפה length ומעמיסה equals(Rectangle)/Equals(Rectangle) (לא דריסה של equals(Object)). שלושת הסעיפים בודקים העמסה חוקית, דריסה חוקית, ומעקב אחרי איזו equals נבחרת בפועל בכל קריאה.
Square מכילה width, color, בונה, ואת paint/Paint ו-perimeter/Perimeter. Rectangle יורשת מ-Square, מוסיפה length ומעמיסה equals(Rectangle)/Equals(Rectangle) (לא דריסה של equals(Object)). שלושת הסעיפים בודקים העמסה חוקית, דריסה חוקית, ומעקב אחרי איזו equals נבחרת בפועל בכל קריאה.
public class Square {
protected double width;
protected String color;
public Square(double val){ width = val; color = "black"; }
public void paint(double scale, String color){ ... }
public double perimeter(double scale){ ... }
}
public class Rectangle extends Square {
private double length;
public Rectangle(double val1, double val2){
super(val1);
length = val2;
}
public boolean equals(Rectangle other){
return width == other.width && length == other.length;
}
}
אילו מהחתימות הבאות היא העמסה (overloading) חוקית של הפעולה paint? הסבירו את תשובתכם!
- public int paint (double y, String x)
- public void paint (int x)
- public double paint (double a, char b)
- private void paint(double x, String y)
- private double paint (String y, double x)
נתונה המחלקה Rectangle (מלבן) היורשת מ-Square (ראו את קוד המחלקה למעלה). עבור כל אחת מבין הפעולות הבאות קבעו אם אפשר להוסיף אותה למחלקה Rectangle? הסבירו את תשובתכם!
- private double perimeter (double x){...}
- public double perimeter (double y) {...}
- public void perimeter (){...}
- public int perimeter (int y) {...}
- public void perimeter (double x) {...}
לפניכם קטע קוד מהתוכנית הראשית: Square sqr1 = new Square(1); Square sqr2 = new Square(1); Square sqrRec = new Rectangle(1,2); Rectangle rec = new Rectangle(1,2); System.out.println(sqr1.equals(sqr2)); System.out.println(sqrRec.equals(rec)); System.out.println(sqrRec.equals((Square)rec)); System.out.println(((Rectangle)sqrRec).equals(rec)); System.out.println(rec.equals(sqrRec)); עקבו אחרי ביצוע קטע הקוד ורשמו מה יהיה הפלט.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.