Given:
public class SuperTest {
public static void main(String[] args) {
statement1
statement2
statement3
}
}
class Shape {
public Shape() {
System.out.println("Shape: constructor");
}
public void foo() {
System.out.println("Shape: foo");
}
}
class Square extends Shape {
public Square() {
super();
}
public Square(String label) {
System.out.println("Square: constructor");
}
public void foo() {
super.foo();
}
public void foo(String label) {
System.out.println("Square: foo");
}
}
What should statement1, statement2, and statement3, be respectively, in order to produce the result?
Shape: constructor
Square: foo
Shape: foo
A.
Square square = new Square (“bar”);
square.foo (“bar”);
square.foo();
B.
Square square = new Square (“bar”);
square.foo (“bar”);
square.foo (“bar”);
C.
Square square = new Square ();
square.foo ();
square.foo(bar);
D.
Square square = new Square ();
square.foo ();
square.foo(“bar”);
E.
Square square = new Square ();
square.foo ();
square.foo ();
Explanation:
Incorrect answers:
A: Produces
Shape: constructor
Square: constructor
Square: foo
Shape: foo
B: Produces
Shape: constructor
Square: constructor
Square: foo
Square: foo
C: Produces
Shape: constructor
Shape: foo
Square: foo
E: Produces
Shape: constructor
Shape: foo
Shape: foo
Answer:
Square square = new Square();
square.foo(“bar”);
square.foo();
None of them is correct. Correct answer:
Square square = new Square ();
square.foo(“bar”);
square.foo ();
a