D d = (D) (C) new D();
Na instrução acima como é possível fazer um cast de (C) new D()
para (D)
, sendo que C
não é D
.
Segue código completo:
abstract class B {
void x() {
System.out.println(y());
}
abstract int y();
}
abstract class C extends B {
int y() { return 1; }
}
class D extends C {
int y() { return 2; }
}
class A {
public static void main(String[] args) {
D d = (D) (C) new D();
d.x();
}
}