Discussion :: Inner Classes
-
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 */
A.
An exception occurs at runtime at line 10. |
B.
It prints "Zippo". |
C.
Compilation fails because of an error on line 7. |
D.
Compilation fails because of an error on line 13. |
Answer : Option B
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 Object does not have a name variable.
Be The First To Comment