What will happen when you compile and run the following code?

class Base {}
class Sub extends Base {}

public class X
{
    public static void main(final String[] args)
    {
        Base b = new Sub();
        Sub s = b;
        System.out.println(s.equals(b) ? "equals" : "not equal");
    }
}
A) Error: "Explicit cast needed."
B) Error: "Invalid operator '?'"
C) Output: true
D) Output: not equals
E) Output: equals