Hi I wonder if somebody can help me to understand a few things in the following example:
// Fig. 8.17: PackageDataTest.java
// Package-access members of a class are accessible by other classes
// in the same package.
public class PackageDataTest
{
public static void main( String[] args )
{
PackageData packageData = new PackageData();
// output String representation of packageData
System.out.printf( "After instantiation:\n%s\n", packageData );
// change package access data in packageData object
packageData.number = 77;
packageData.string = "Goodbye";
// output String representation of packageData
System.out.printf( "\nAfter changing values:\n%s\n", packageData );
} // end main
} // end class PackageDataTest
// class with package access instance variables
class PackageData
{
int number; // package-access instance variable
String string; // package-access instance variable
// constructor
public PackageData()
{
number = 0;
string = "Hello";
} // end PackageData constructor
// return PackageData object String representation
public String toString()
{
return String.format( "number: %d; string: %s", number, string );
} // end method toString
} // end class PackageData
In this line System.out.printf( "After instantiation:\n%s\n", packageData );
packageData is the name of the class, I didn't know that it could be used as a parameter. I assume it's calling the toString method? But can you actually do that, use the class name to call a method like that?! never seen that before!