Answer:

  1. Do the instance variables of an object hold values for the lifetime of the object?
    • Yes—an object is a "thing" that has state (its unique characteristics.) The state is kept in instance variables.
  2. Do the parameters of a constructor hold values for the lifetime of the object?
    • No—the parameters of a constructor are part of a temporary "message" to the constructor. After the parameters have been used, they are gone.

Possible Errors

Of course, the data in the "message" to the constructor will usually be stored in the instance variables, where it will remain until the object is destroyed (or until the instance variables are deliberately changed).

Here is an interesting program. Is anything wrong?

class Car
{
  // instance variables
  double startMiles;   // Stating odometer reading
  double endMiles;     // Ending odometer reading
  double gallons;      // Gallons of gas used between the readings

  // constructor
  Car( double first, double last, double gals )
  {
    startMiles = first ;
    endMiles   = last ;
    gallons    = gals ;
  }

  // methods
  double calculateMPG()
  {
    return  (last - first)/gals  ;
  }

}

class MilesPerGallon
{
  public static void main( String[] args ) 
  {
    Car car = new Car( 32456, 32810, 10.6 );
    System.out.println( "Miles per gallon is " + car.calculateMPG() );
  }
}

QUESTION 17:

Examine the program. Is there anything wrong?