2015-09-06 51 views
-3
public class Person { 
    protected String name; 
    public Person(String name) { 
     this.name = name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String toString() { 
     return name; 
    } 
} 
public class Student extends Person { 
    protected String program; 
    protected int credits; 
    public Student(String name, String program) { 
     super(name); 
     this.program = program; 
     credits = 0; 
    } 
    public String toString() { 
     return name + ", " + program; 
    } 
    ... 
} 
public class FacultyMember extends Person { 
    protected String department; 
    public FacultyMember(String name, String department) { 
     super(name); 
     this.department = department; 
    } 
    public String toString() { 
     return name + ", " + department; 
    } 
} 

假设我们声明一个变量String info。什么值信息中的部分陈述每个 得到:使用toString有什么好处()

Person p = new Person("Lisa Svensson"); 
info = p.toString(); 
p = new Student("Lisa Svensson","D"); 
info = p.toString(); 

什么是在这个例子中使用toString()的好处?

+0

info获取的值取决于Person和Student类的toString()方法。你可以发布这些? – Mshnik

+0

你不能将'p'分配给'info',因为一个是'Person'对象,另一个是'String'对象。 '.toString()'将'p'转换为'String'。 –

+1

为什么你不运行并看到结果! –

回答

0
Person p = new Person("Lisa Svensson"); 
info = p.toString(); 

在这里,您将Person对象的字符串表示赋值给String信息。 如果您已覆盖Person对象中的toString,则info将打印对象人员的字符串表示形式,否则会打印非人类可读的字符串表示形式。

+0

我没有发布所有的代码..你能为我描述吗什么信息输出? – Ali12

0

那么如果你没有在这两种情况下定义自己的toString(),info可能会包含该对象在内存中的位置。 toString()是一个由Object类定义的方法,它是java中所有其他对象继承的方法。为对象定义(覆盖)自己的toString方法只是告诉你想要的对象的字符串表示形式。它可能是一个不同属性的组合字符串或一些处理过的数据。例如,在列表框中放置对象时,需要列表框(如果您正在开发一个GUI),那些对象稍后将显示在对象列表中,默认情况下,列表框将调用对象toString方法来获取字符串对象将被表示。