A good answer might be:

  1. How many class definitions are there in this program?
    • Two: HelloObject, and HelloTester
  2. Is a HelloTester object created when the program runs?
    • No. The class definition of HelloTester contains the static main() method. It can execute without an object being constructed.

Testing Class

The Java interpreter starts a program by looking for a static main() method inside of the HelloTester.class file. Since the method is static the interpreter can run it without first constructing an object.

It is convenient to have a separate class that serves no other purpose than to contain the main() method. This testing class is used to start things running. Usually its main() constructs objects of various classes and calls their methods. These objects do the real work of the program.

The source file for the program is named HelloTester.java. When you compile the file, the compiler outputs two separate files of bytecodes:

C:\chap30>javac HelloTester.java
  compiling: HelloTester.java

C:\chap30>dir

11/13/98  10:07p                   257 HelloTester.java
11/13/98  10:40p                   476 HelloObject.class
11/13/98  10:40p                   373 HelloTester.class
               3 File(s)          1,106 bytes

To run the program type:

java HelloTester

The Java interpreter finds the main() method in the HelloTester class and starts it running.

QUESTION 10:

When the Java interpreter needs the definition HelloObject, where will it be found?