L'esempio che hai fatto è corretto. Attenzione però alle classi e ai metodi astratti: è obbligatorio creare discendenze e farne l'override poichè la chiamata di un metodo, se astratto e non ridefinito, genera un errore!

Per la definizione di polimorfismo, in generale credo si possa dire sinteticamente che è la capacità di analizzare azioni (metodi) e caratteristiche (proprietà) di una entità (classe) ponendosi nel contesto dell'entità derivata (classe discendente) che si sta analizzando.

Magari qualcun altro avrà una definizione più azzeccata...

Ciao!