Home / Java Programming / Inner Classes :: Discussion

Discussion :: Inner Classes

  1. class Foo  {     class Bar{ } } class Test  {     public static void main (String [] args)      {         Foo f = new Foo();         /* Line 10: Missing statement ? */     } } 
    which statement, inserted at line 10, creates an instance of Bar?

  2. A.
    Foo.Bar b = new Foo.Bar();
    B.
    Foo.Bar b = f.new Bar();
    C.
    Bar b = new f.Bar();
    D.
    Bar b = f.new Bar();

    View Answer

    Workspace

    Answer : Option B

    Explanation :

    Option B is correct because the syntax is correct-using both names (the enclosing class and the inner class) in the reference declaration, then using a reference to the enclosing class to invoke new on the inner class.

    Option A, C and D all use incorrect syntax. A is incorrect because it doesn't use a reference to the enclosing class, and also because it includes both names in the new.

    C is incorrect because it doesn't use the enclosing class name in the reference variable declaration, and because the new syntax is wrong.

    D is incorrect because it doesn't use the enclosing class name in the reference variable declaration.


Be The First To Comment