10 points.
Consider the following Java classes:
public class A extends Object {
A() { /* null constructor */ }
public void printMe() { System.out.println("I'm first."); }
}
public class B extends A {
B() { /* null constructor */ }
public void printMe() { System.out.println("I'm second."); }
}
public class C extends B {
C() { /* null constructor */ }
public void printMe() { System.out.println("I'm third."); }
}
public class D extends C {
D() { /* null constructor */ }
public void printMe() { System.out.println("Rank doesn't matter, man."); }
public static void main(String[] args) {
B bill = new C();
A george = new A();
Object obj = new D();
Object interim = new B();
bill.printMe();
george.printMe();
((C) obj).printMe();
obj = bill;
((A) obj).printMe();
obj = interim;
((B) obj).printMe();
}
}
What is the output from calling the main() method of the D class?