logo CodeStepByStep logo

inheritanceMystery1

Language/Type: Java inheritance polymorphism

Assume that the following classes have been defined:

public class A extends B {
    public void method2() {
        System.out.print("a 2  ");
        method1();
    }
}

public class B extends C {
    public String toString() {
        return "b";
    }

    public void method2() {
        System.out.print("b 2  ");
        super.method2();
    }
}

public class C {
    public String toString() {
        return "c";
    }

    public void method1() {
        System.out.print("c 1  ");
    }

    public void method2() {
        System.out.print("c 2  ");
    }
}

public class D extends B {
    public void method1() {
        System.out.print("d 1  ");
        method2();
    }
}

Given the classes above, what output is produced by the following code? (Since the code loops over the elements of an array of objects, write the output produced as the loop passes over each element of the array separately.)

C[] elements = {new A(), new B(), new C(), new D()};
for (int i = 0; i < elements.length; i++) {
    System.out.println(elements[i]);
    elements[i].method1();
    System.out.println();
    elements[i].method2();
    System.out.println();
    System.out.println();
}

element 0
element 1
element 2
element 3

You must log in before you can solve this problem.

Log In

Need help?

Stuck on an exercise? Contact your TA or instructor.

If something seems wrong with our site, please

Is there a problem? Contact us.