logo Practice-It logo

inheritanceMystery

Author: Helene Martin (on 2011/12/14)

Assume that the following classes have been defined:

public class Tulip extends Rose {
    public void method1() {
        System.out.print("Tulip 1 ");
    }
}

public class Violet {
    public void method1() {
        System.out.print("Violet 1 ");
    }
    
    public void method2() {
        System.out.print("Violet 2 ");
    }
    
    public String toString() {
        return "Violet";
    }
}
public class Rose extends Lily {
    public String toString() {
        return "Rose " + super.toString();
    }
}

public class Lily extends Violet {
    public void method1() {
        super.method1();
        System.out.print("Lily 1 ");
    }
    
    public void method2() {
        System.out.print("Lily 2 ");
        method1();
    }
    
    public String toString() {
        return "Lily";
    }
}

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

Violet[] pretty = { new Tulip(), new Lily(), new Violet(), new Rose() };
for (int i = 0; i < pretty.length; i++) {
    System.out.println(pretty[i]);
    pretty[i].method1();
    System.out.println();
    pretty[i].method2();
    System.out.println();
    System.out.println();
}
elements[0]: Tulip
elements[1]: Lily
elements[2]: Violet
elements[3]: Rose

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.