Originariamente inviato da andbin 
Piccola nota: il cast esplicito 
non è affatto necessario! Con i tipi reference un "up-cast" non fallisce mai e non dà mai problemi. Ed è ... 
implicito!
			
		
 
	 
 
Detto in Java, con il tuo codice:
	codice:
	public Persona getPersona() {
   Lavoratore lavoratore = new Lavoratore(...);
   Studente studente = new Studente(...);
   ...
   if ( ... ) {
      return lavoratore;
   } else {
      return studente;
   }
}
 
O, per scriverla meglio ed in modo perfettamente equivalente:
	codice:
	public Persona getPersona() {
   Persona p = null;
   if ( ... ) {
      p = new Lavoratore(...);
   } else {
      p = new Studente(...);
   }
   ...
   return p;
}
 
Ciao. 