Sem compilar, oq acontece e pq:
1
class A {void m(A a) {System.out.print("A");}}
class B extends A {void m(B b) {System.out.print("B");}}
class C extends B {void m(C c) {System.out.print("C");}}
class D extends C {
void m(D d) {System.out.print("D");}
public static void main(String[] args) {
A a = new A(); B b = new B(); C c = new C(); D d = new D();
d.m(a); d.m(b); d.m(c);
}}
2
class A {void m(A a) {System.out.print("A");}}
class B extends A {void m(B b) {System.out.print("B");}}
class C extends B {void m(C c) {System.out.print("C");}}
class D extends C {
void m(D d) {System.out.print("D");}
public static void main(String[] args) {
A a = new A(); B b = new B(); C c = new C(); D d = new D();
a.m(c); a.m(c); a.m(c);
}}
:?:


