2015-09-06 48 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方法來獲取字符串對象將被表示。