Buenos días javi,
Primero gracias por tu respuesta, como siempre es un tiempo dedicado que se agradece infinito.
Empiezo por el final, basicamente puse el super.toString() pero como el ejercicio pedía que se viera que toString() concreto se ejecutaba, consideré a modo de test que era mas claro eliminarlo, así o solo se mostraba la info de Taxi o la de Vehiculos, en un ejercicio normal, hay que ponerlo sí o sí lo comprendo y es lógico.
Y sobre la pregunta
a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?
Me mantengo ciñendome a lo que leo en ella que No. Una cosa es que, como señala Mario en el link que me has pasado, en un momento dado de la ejecución, el contenedor v1 (Vehiculo) albergue un Taxi y evidentemente, con un cast, al ser instanceof Taxi lo pase sin problemas.
Pero la pregunta especifica un objeto Vehiculo, entiendo que apunte a un Vehiculo, y por lo que he leído y entendido ni con un casting se puede pasar, pues da error;
Java.lang.ClassCastException.
Si estoy equivocado, repasaré de nuevo el tema 689. Yo lo entendíasí y supongo que el matiz que quereis se entienda es el "casting" de un Taxi dentro de Vehiculo es posible. Pero eso sigue siendo un Taxi
no un objeto Vehiculo.