Il cast sui reference non cambia nulla nel valore del reference in sé e nemmeno nell'oggetto referenziato. Cambia solo la "visione" che si ha dell'oggetto.
Se è un down-cast (verso un sotto-tipo), è soggetto a controllo a runtime, perché in Java non è lecito che un reference possa fare riferimento ad un oggetto per cui non valga la relazione IS-A.