This week's book giveaway is in the OCMJEA forum. We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line! See this thread for details.
In your second code sample, Vehicle#getType() returns a Vehicle. Since Car extends Vehicle -- every Caris-aVehicle -- you can't override the method to return String; the returned type must be a Vehicle (which includes any subclass of Vehicle, which as said, is-aVehicle). And a String is definitely not a Vehicle.