Scusate il binding dinamico che effuttua java, mi consente di ereditare gli attributi e i metodi di una classe e fare l'override dei metodi, onde lasciare in una terza applicazione, l'onere all'interprete di usare il metodo giusto a seconda del tipo di istanza passata allo stesso?

in poche parole per fini didattici ho scritto una clsse Punto che calcola la distanza tra due oggetti Punto, poi l'ho estesa a Punto3D, introducendo un'altro attributo che tenesse conto della coordinata z e ho ridefinito il metodo che calcola la distanza.

Dopo ho scritto la classe PianoCartesiano, la quale possiede il metodo norma che presi due punti ne restituisce la distanza invocando al suo interno il metodo distanza di Punto ed accettando due oggetti di tipo Punto.

ora se io gli do due oggetti di tipo Punto3D, in automatico grazie al binding dinamico non dovrebbe usare i metodo distanza definito nella sottoclasse Punto3d della classe Punto?

A me invece usa il metodo distanza definito nella superclasse ovvero Punto, non ho capito io il concetto binding dinamico (sistema tramite java lega il metodo da invocare all'istanza), ho non so sbaglio in qualche cosa?