Если бы было System.out.println(duck1.toString); то понятно мы обращаемся к функции и она возвращает значение. А мы обращаемся к объекту System.out.println(duck1);..