gpt4 book ai didi

java - 这些方法如何在不被调用的情况下被使用?

转载 作者:行者123 更新时间:2023-12-01 06:28:50 25 4
gpt4 key购买 nike

我有这组精简的类文件作为面向对象的示例。它们工作完美,但我不明白来自 WorkerTest.javaprintln 调用如何一路通过 Worker.java 并到达 Date.javaWorker.javaDate.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 );
}
}
<小时/>

输出:生日:1922 年 7 月 15 日

最佳答案

PrintStream.println(obj) 调用 obj.toString()。 (或更准确地说:它调用 String.valueOf(obj),后者又调用 obj.toString(),除非 obj 是空引用.)

参见the Javadoc for java.io.PrintStream .

(也许您缺少的是 toString 实际上是 java.lang.Object 上的一个方法?Worker Date 只是覆盖它。因此所有对象都有该方法,并且 JDK 方法可以依赖它的存在。请参阅 the Javadoc for `java.lang.Object 以获取所有对象都具有的所有方法的列表。)

关于java - 这些方法如何在不被调用的情况下被使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14929417/

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