我已经减少了一组类文件作为OO的例子。他们完美地工作,但我不明白,从WorkerTest.java的println
呼叫如何使它一路过关斩将Worker.java和Date.java?这两个Worker.java和Date.java有toString
方法,但都没有明确调用,但我可以从输出告诉我们都使用。这些方法如何被使用而不被调用?
这是如何工作,或我应该研究什么概念?
public class WorkerTest {
public static void main(String[] args) {
Date birth = new Date(7, 15, 1922);
Worker worker = new Worker(birth);
System.out.println(worker);
}
}
public class Worker {
private Date birthday;
public Worker( Date inboundBirthday) {
birthday = inboundBirthday;
}
public String toString() {
return String.format("Birthday: %s", birthday);
}
}
public class Date {
private int month;
private int day;
private int year;
public Date(int inboundMonth, int inboundDay, int inboundYear) {
month = inboundMonth;
day = inboundDay;
year = inboundYear;
}
public String toString() {
return String.format("%d/%d/%d", month, day, year);
}
}
输出: Birthday: 7/15/1922
我确定其他人可以更好地描述它,但是,如果您正在编写的值不是'String',Java将自动在'Object'上调用'toString'。 – MadProgrammer 2013-02-18 04:21:34
相关问题:http://stackoverflow.com/questions/8555771/why-is-the-tostring-method-being-called-when-i-print-an-object – ajp15243 2013-02-18 04:21:57