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

consider the following three classes: public class A { private int number; prote

ID: 3570679 • Letter: C

Question

consider the following three classes:

public class A
{
     private int number;
     protected String name;
     public double price;

     public A()
     {
          System.out.println( "A() called");
     }

     private void foo1()
     {
          System.out.println( "A version of foo1() called");
     }

     protected int foo2()
     {
          System.out.println( "A version of foo2() called");
          return number;
     }

     public String foo3()
     {
          System.out.println( "A version of foo3() called");
          return "Hi";
     }
}

public class B extends A
{
     private char service;

     public B()
     {
          super();
          System.out.println( "B() called" );
     }

     public void foo1()
     {
          System.out.println( "B version of foo1() called");
     }

     protected int foo2()
     {
          int n = super.foo2();
          System.out.println( "B version of foo2() called");
          return ( n + 5 );
     }

     public String foo3()
     {
          String temp = super.foo3();
          System.out.println( "B version of foo3() called");
           return ( temp + " foo3");
     }
}

public class C extends B
{
     public C()
     {
          super();
          System.out.println( "C() called");
     }

     public void foo1()
     {
          System.out.println( "C version of foo1() called");
     }
}

What is the output of the following code sequence:

     B b3 = new B();
     int n = b3.foo2();

A() called
B() called
A version of foo2() called
B version of foo2() called

A() called
B() called
A version of foo2() called
B version of foo2() called
5

A() called
B() called
B version of foo2() called
5

B() called
A() called
B version of foo2() called

a.

A() called
B() called
A version of foo2() called
B version of foo2() called

b.

A() called
B() called
A version of foo2() called
B version of foo2() called
5

c.

A() called
B() called
B version of foo2() called
5

d.

B() called
A() called
B version of foo2() called

Explanation / Answer

a.

A() called
B() called
A version of foo2() called
B version of foo2() called

A() called
B() called
A version of foo2() called
B version of foo2() called