Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

class Boo { Boo(String s) { } Boo() { } } class Bar extends Boo { Bar() { } Bar(

ID: 3544955 • Letter: C

Question

 class Boo  {     Boo(String s) { }     Boo() { } } class Bar extends Boo  {     Bar() { }     Bar(String s) {super(s);}     void zoo()      {     // insert code here     } } 

which one create an anonymous inner class from within class Bar?

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) { };
  class Boo   {      Boo(String s) { }      Boo() { }  }  class Bar extends Boo   {      Bar() { }      Bar(String s) {super(s);}      void zoo()       {      // insert code here      }  }  

which one create an anonymous inner class from within class Bar?

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) { };

Explanation / Answer

Answer:


Option B

Explanation:

Option B is correct because anonymous inner classes are no different from any other class when it comes to polymorphism. That means you are always allowed to declare a reference variable of the superclass type and have that reference variable refer to an instance of a subclass type, which in this case is an anonymous subclass of Bar. Since Bar is a subclass of Boo, it all works.

Option A is incorrect because it passes an int to the Boo constructor, and there is no matching constructor in the Boo class.

Option C is incorrect because it violates the rules of polymorphism