Beh in realtà si tratta di un aspetto fondamentale della programmazione ad oggetti ed è molto importante conoscerne i vantaggi. Il tuo caso probabilmente non è molto rilevante perché di fatto un Cerchio non è un punto.
Per fare un esempio semplice ma rilevante considera le seguenti classi:
public class Persona{
private String nome, cognome;
private int eta;
public Persona(String n, String c, int e){
nome = n;
cognome = c;
eta = e;
}
//Tutti i getters e setters
....
}
public class Studente extends Persona{
private String matricola;
public Studente(String n, String c, int e, String m){
super(n,c,e);
matricola = m;
}
//Getter e setter per matricola
...
}
public class Lavoratore extends Persona{
private String stipendio;
public Lavoratore(String n, String c, int e, String s){
super(n,c,e);
stipendio = s;
}
//Getter e setter per stipendio
...
}
In questo modo in ogni contesto in cui è richiesto un oggetto di tipo Persona si può utilizzare indifferentemente sia una Persona, sia uno Studente sia un Lavoratore e questo grazie al polimorfismo. Ovviamente dal momento che è richiesto un oggetto di tipo Persona non sarà possibile utilizzare i metodi specifici di Studente e neanche di Lavoratore, poiché appunto si tratta di una Persona e non è detto che essa debba avere per forza uno stipendio o un numero di matricola.
L'esempio è molto banale ma spero possa aiutarti a comprendere il significato di questo meccanismo. Se hai dubbi chiedi pure perché come già detto il polimorfismo è fondamentale per la OOP.