מחלקה A: שדה סטטי countA, שדה פרטי myVal, שדה מוגן myString, שני בנאים, ופעולה func המדפיסה "YES". מחלקה B יורשת מ-A, מוסיפה שדה פרטי x ופעולה goodCode הבודקת x>15.0.
מחלקה A: שדה סטטי countA, שדה פרטי myVal, שדה מוגן myString, שני בנאים, ופעולה func המדפיסה "YES". מחלקה B יורשת מ-A, מוסיפה שדה פרטי x ופעולה goodCode הבודקת x>15.0.
public class A {
public static int countA = 0;
private int myVal;
protected String myString;
public A() { myVal = 1; }
public A(int val) { myVal = val; myString = "GOOD!"; }
public void func() { System.out.println("YES"); }
}
public class B extends A {
private double x;
public boolean goodCode() { return x > 15.0; }
}
לפניכם חמישה היגדים. קבעו לכל אחד מהם אם הוא נכון או אינו נכון ונמקו את קביעתכם:
- המחלקה B לא תעבור קומפילציה כי אין לה אף בנאי.
- המחלקה A יורשת את הפעולה goodCode מהמחלקה B.
- המחלקה B יורשת את כל התכונות ואת כל הפעולות של המחלקה A.
- המחלקה B יכולה לגשת ישירות לתכונות של המחלקה A.
- המחלקה A יכולה לגשת לתכונה x של המחלקה B.
כתבו במחלקה B פעולה בונה שמקבלת כפרמטר מספר שלם ומספר ממשי ומאתחלת את התכונות בהתאם.
public B(int val, double x)
לפניכם שתי הוראות מהתוכנית הראשית:
A one = new B(127, 1.4);
A two = new A(613);
בעבור כל אחת מההוראות שלפניכם קבעו אם היא תקינה או אינה תקינה. אם ההוראה אינה תקינה, נמקו את קביעתכם וציינו אם זו שגיאת ריצה או שגיאת הידור (קומפילציה).
boolean myBool = one.goodCode();boolean myBool = two.goodCode();boolean myBool = ((B)one).goodCode();boolean myBool = ((B)two).goodCode();
בתוכנית מסוימת מעוניינים לדעת כמה פעמים הפעולה func הופעלה מעצם מטיפוס A שאינו B, וכמה פעמים היא הופעלה מעצם מטיפוס B. אם אפשר לקבל מידע זה — כתבו איזה שינויים יש לבצע במחלקות A ו-B. אם אי אפשר לקבל את המידע, הסבירו מדוע.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.