Home / Java Programming / Declarations and Access Control :: Discussion

Discussion :: Declarations and Access Control

  1. What will be the output of the program?

    class Base {      Base()     {         System.out.print("Base");     } }  public class Alpha extends Base {      public static void main(String[] args)     {          new Alpha(); /* Line 12 */         new Base(); /* Line 13 */     }  } 

  2. A.
    Base
    B.
    BaseBase
    C.
    Compilation fails
    D.
    The code runs with no output

    View Answer

    Workspace

    Answer : Option B

    Explanation :

    Option B is correct. It would be correct if the code had compiled, and the subclass Alpha had been saved in its own file. In this case Java supplies an implicit call from the sub-class constructor to the no-args constructor of the super-class therefore line 12 causes Base to be output. Line 13 also causes Base to be output.

    Option A is wrong. It would be correct if either the main class or the subclass had not been instantiated.

    Option C is wrong. The code compiles.

    Option D is wrong. There is output.


Be The First To Comment