logo

CuriousTab

CuriousTab

Inner Classes problems


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

  • Options
  • 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();
  • Discuss
  • 2. Which constructs an anonymous inner class instance?

  • Options
  • A. Runnable r = new Runnable() { };
  • B. Runnable r = new Runnable(public void run() { });
  • C. Runnable r = new Runnable { public void run(){}};
  • D. System.out.println(new Runnable() {public void run() { }});
  • Discuss
  • 3. Which one create an anonymous inner class from within class Bar?
    class Boo 
    {
        Boo(String s) { }
        Boo() { }
    }
    class Bar extends Boo 
    {
        Bar() { }
        Bar(String s) {super(s);}
        void zoo() 
        {
        // insert code here
        }
    }
    

  • Options
  • A. Boo f = new Boo(24) { };
  • B. Boo f = new Bar() { };
  • C. Bar f = new Boo(String s) { };
  • D. Boo f = new Boo.Bar(String s) { };
  • Discuss
  • 4. Which is true about an anonymous inner class?

  • Options
  • A. It can extend exactly one class and implement exactly one interface.
  • B. It can extend exactly one class and can implement multiple interfaces.
  • C. It can extend exactly one class or implement exactly one interface.
  • D. It can implement multiple interfaces regardless of whether it also extends a class.
  • Discuss
  • 5. Which is true about a method-local inner class?

  • Options
  • A. It must be marked final.
  • B. It can be marked abstract.
  • C. It can be marked public.
  • D. It can be marked static.
  • Discuss
  • 6. Which statement, if placed in a class other than MyOuter or MyInner, instantiates an instance of the nested class?
    public class MyOuter 
    {
        public static class MyInner 
        {
            public static void foo() { }
        }
    }
    

  • Options
  • A. MyOuter.MyInner m = new MyOuter.MyInner();
  • B. MyOuter.MyInner mi = new MyInner();
  • C. MyOuter m = new MyOuter();

    MyOuter.MyInner mi = m.new MyOuter.MyInner();

  • D. MyInner mi = new MyOuter.MyInner();
  • Discuss
  • 7. Which statement is true about a static nested class?

  • Options
  • A. You must have a reference to an instance of the enclosing class in order to instantiate it.
  • B. It does not have access to nonstatic members of the enclosing class.
  • C. It's variables and methods must be static.
  • D. It must extend the enclosing class.
  • Discuss

First