我正在爲AP CS考試進行學習,並在我的書的OOP部分中發現了這個練習題。 給出以下兩個類。OOP AP CS練習
package chap4q9;
public class Person
{
private int age;
public Person(int a)
{
age = a;
}
public String toString()
{
return "Age: " + age + "\n";
}
}
package chap4q9;
public class Student extends Person
{
private double gpa;
public Student(int a, double g)
{
super(a);
gpa = g;
}
public String toString()
{
return super.toString() + "GPA: " + gpa; //This was where the missing code was
}
}
而以下是調用這兩個類的客戶端程序。
package chap4q9;
public class Chap4Q9
{
public static void main(String[] args)
{
Student kathy = new Student(17, 3.85);
System.out.println(kathy);
}
}
最後,輸出是:
年齡:17
GPA:3.85
以防萬一你想知道,有沒有實際應該是年齡之間的線和輸出中的GPA,當我發佈這個時,這是一個奇怪的格式化的東西。
目標是在第二個toString方法中替換丟失的代碼(在上面的代碼中,爲缺少的代碼插入了正確的答案,但我標記了位置)。我認爲這本書是錯誤的,但運行代碼並得到相同的輸出。我認爲它只是打印kathy所在的內存位置,如果你想得到那個輸出,你將不得不打印kathy.toString()。但是,只需打印kathy似乎在運行Student類中的toString方法。我的問題是,爲什麼要打印Student對象kathy,獲取該輸出,而不是簡單的內存位置。 預先感謝所有回覆。
實際上,它調用'String.valueOf(...)'輸出''null''給出'null'參數。 – Gandalf
爲+1,mcfinnigan爲-1。在這裏,我們看到了一個很好的答案和一個完全無用的答案之間的區別。好東西Robert M. – Brendan