gpt4 book ai didi

java - OOP AP CS 练习

转载 作者:太空宇宙 更新时间:2023-11-04 08:30:21 26 4
gpt4 key购买 nike

我正在准备 AP CS 考试,并在我的书的 OOP 部分遇到了这个练习题。给出了以下两个类。

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

平均绩点:3.85

以防万一您想知道,输出中的年龄和 GPA 之间实际上不应该有一条线,当我发布此内容时,这是一个奇怪的格式。

目标是替换第二个 toString 方法中缺失的代码(在上面的代码中,为缺失的代码插入了正确的答案,但我标记了位置)。我认为这本书是错的,但运行代码并得到相同的输出。我认为它只会打印 kathy 所在的内存位置,如果您想获得该输出,则必须打印 kathy.toString()。但是,仅打印 kathy 似乎正在运行 Student 类中的 toString 方法。我的问题是,为什么要打印 Student 对象 kathy 来获取该输出,而不仅仅是一个内存位置。预先感谢所有回复。

最佳答案

这只是因为 System.out.println 默认情况下调用对象的 toString() 方法。在您的情况下,您已经在子类中实现了自己的 toString,因此使用了它。

仅当您的 Person 和 Student 类中没有 toString 时,才会调用 Object 类中的 toString,它会打印一个对象标识字符串,该字符串由类名和对象的 hashCode 的十六进制表示形式组成。

有关更多详细信息,请参阅对象类的 javadoc:http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#toString ()

关于java - OOP AP CS 练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7649761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com