首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OOP AP CS实践

OOP AP CS实践
EN

Stack Overflow用户
提问于 2011-10-04 22:49:12
回答 4查看 192关注 0票数 1

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

代码语言:javascript
复制
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
    }
}

下面是调用这两个类的客户端程序。

代码语言:javascript
复制
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.toString()。但是,仅仅打印kathy似乎就是在学生类中运行toString方法。我的问题是,为什么要打印学生对象,凯西,得到那个输出,而不只是一个内存位置。提前感谢所有的回复。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-04 22:56:22

这只是因为System.out.println在默认情况下会调用对象的toString()-method。在本例中,您已经在子类中实现了自己的toString,因此使用以下代码。

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

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

票数 2
EN

Stack Overflow用户

发布于 2011-10-04 22:56:58

默认情况下,println(Object)会调用String.valueOf(...)方法。看看:http://download.oracle.com/javase/1.4.2/docs/api/java/io/PrintStream.html#print(java.lang.Objecthttp://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#valueOf(java.lang.Object

票数 0
EN

Stack Overflow用户

发布于 2015-04-29 00:04:44

我想在书中的某个地方,它说当做System.out.println时,如果有toString方法,它会自动调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7649761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档