Mi spiace avere difficoltà a comunicare sull'argomento.
L'override avviene a ritroso, prima cercando il metodo nella sottoclasse (un override del metodo presente anche in superclasse) poi se non lo trova lo cerca risalendo la gerarchia (non ho limiti in fatto di livelli di ereditarietà, che però è un concetto "univoco a salire").
Quindi se un metodo è overridden, viene eseguito sempre quello della sottoclasse, a maggior ragione se faccio downcasting dando al compilatore un riferimento a un oggetto più specifico (con metodi propri e altri eventualmente sovrascritti).