A good answer might be:

A type cast is necessary to tell the compiler that the variable tax in this case contains a Book object:

  public static void main ( String[] args )
  {
    Book    book ;
    Taxable tax = new Book ( "Emma", 24.95, "Austin" );

    book = (Book)tax;
    book.display();
    System.out.println( "Tax on item 1 "+ book.calculateTax() );
  }

More Practice

Now Consider the following code:

  public static void main ( String[] args )
  {
    Goods   toy ;
    Taxable tax = new Toy ( "Grobot", 1.49, 6 );

    toy = tax;
    toy.display();
    System.out.println( "Tax: "+ toy.calculateTax() );
  }

QUESTION 18:

Are type casts necessary? Where should they go? Hint: there are several correct answers.