How are these methods being used without being called?
<p>I have this pared down set of class files as an example of OO.  They work perfectly but I do not understand how the <code>println</code> call from <em>WorkerTest.java</em> makes it all the way through <em>Worker.java</em> and to <em>Date.java</em>?   Both <em>Worker.java</em> and <em>Date.java</em> have <code>toString</code> methods but neither are explicitly called, but I can tell from the output that both are used.  </p>

<p>How is this working or what concept should I be studying?  </p>

<pre><code>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 );
   }
}
</code></pre>

<hr>

<pre><code>public class Worker {
    private Date birthday;

    public Worker(  Date inboundBirthday ) {
      birthday = inboundBirthday;
    }

   public String toString() {
      return String.format( "Birthday: %s",  birthday );
   }
}
</code></pre>

<hr>

<pre><code>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 );
    }
}    
</code></pre>

<hr>

<p>Output:
<code>Birthday: 7/15/1922</code></p>
