This is a beta version of Practice-It. Give us feedback

logo Practice-It logo

inheritance mystery

Author: Whitaker Brand (on 2018/05/01)

Assume that the following classes have been defined:

public class Brian extends Lois {
    public void b() {
        a();
        System.out.print("Brian b   ");
    }
    public String toString() {
        return "Brian";
    }
}

public class Lois extends Meg {
    public void a() {
        System.out.print("Lois a   ");
        super.a();
    }
    public void b() {
        System.out.print("Lois b   ");
    }
}
public class Meg {
    public void a() {
        System.out.print("Meg a   ");
    }
    public void b() {
        System.out.print("Meg b   ");
    }
    public String toString() {
        return "Meg";
    }
}

public class Stewie extends Brian {
    public void a() {
        super.a();
        System.out.print("Stewie a   ");
    }
    public String toString() {
        return super.toString() + " Stewie";
    }
}

Given the classes above, what output is produced by the following code?

Meg[] elements = {new Lois(), new Stewie(), new Meg(), new Brian()};
for (int i = 0; i < elements.length; i++) {
    elements[i].a();
    System.out.println();
    elements[i].b();
    System.out.println();
    System.out.println(elements[i]);
    System.out.println();
}
elements[0]: Lois
elements[1]: Stewie
elements[2]: Meg
elements[3]: Brian

You must log in before you can solve this problem.


Log In

If you do not understand how to solve a problem or why your solution doesn't work, please contact your TA or instructor.
If something seems wrong with the site (errors, slow performance, incorrect problems/tests, etc.), please

Is there a problem? Contact a site administrator.