A class doesn’t just need to contain methods and variables, it can also contain references to object. This is known as composition.
Any time you want to turn an object into a string, we go to that class, and call the toString method
// jamesprogram.java class jamesprogram { public static void main (String[] args){ cat catObject = new cat(5,6,7); dog dogObject = new dog("oliver",catObject); System.out.println(dogObject); } }
//cat.java public class cat { // 3 private variables private int month; private int day; private int year; // constructor public cat(int m, int d, int y){ month=m; day=d; year=y; // the reference 'this' below is a reference // to whatever object we just built System.out.printf("The contructor for this is %s\n", this); } public String toString(){ return String.format("%d/%d/%d", month, day, year); } }
//dog.java public class dog { private String name; private cat birthday; // this bit is composition // this constructor takes a name // and an object public dog(String theName, cat theDate){ name = theName; // this is a reference to theDate object birthday = theDate; } public String toString(){ return String.format("My name is %s, my birthday is %s", name, birthday); } }
This program outputs:
The contructor for this is 5/6/7
My name is oliver, my birthday is 5/6/7