Multiple choice

What will be the output of the program? public class HorseTest { public static void main (String [] args) { class Horse { public String name; /* Line 7 / public Horse(String s) { name = s; } } / class Horse ends */

Object obj = new Horse("Zippo"); /* Line 13 / Horse h = (Horse) obj; / Line 14 / System.out.println(h.name); } } / class HorseTest ends */

  1. An exception occurs at runtime at line 10.

  2. It prints "Zippo".

  3. Compilation fails because of an error on line 7.

  4. Compilation fails because of an error on line 13.

Reveal answer Fill a bubble to check yourself
B Correct answer
Explanation

The code in the HorseTest class is perfectly legal. Line 13 creates an instance of the method-local inner class Horse, using a reference variable declared as type Object. Line 14 casts the Horse object to a Horse reference variable, which allows line 15 to compile. If line 14 were removed, the HorseTest code would not compile, because class Objectdoes not have a name variable.