Ciao a tutti, di solito mi trovo sempre bene con la community di questo forum, spero che possiate ancora uan volta aiutarmi.

ho questo esercizio:

class A{}
class B extend A{}
class C extend B{}

class D {
void m(A a) {System.out.print("A");}
void m(B b) {System.out.print("B");}
void m(C c) {System.out.print("C");}

public static void main (String[] arg) {

A c1 = new C();
B c2 = new C();
C c3 = new C();
D d = new D();

d.m(c1); d.m(c2); d.m(c3);

}
}

cosa stampa?

vorrei capire esattamente come ci si comporta x sapere a quale metodo riferirsi.

e capire quando si dichiara A c1 = new C(); come devo ragionare.

grazie a chi mi risponderà