OOP does not work in the real world. Taxis are not derived from Vehicle, they are a Vehicle. OOP is conceptual - Taxis are not.
In a taxi company management application, an object of the the Taxi class would be representing a physical taxi. Duh.
Guess what, in the application here we have a Person class to represent people, and a (believe it or not) Vehicle class to represent vehicles. In our case we don't extend Vehicle because we only need a small set of information that's generalized to all vehicles on the road, like what model it is. However, if we were told to specifically track, say, government-owned vehicles, we would extend the Vehicle class to handle all the extra information and processes associated with a government-owned vehicle.
So you would make a Vehicle class that had loads of properties and methods not used in most of the instantiated objects of class Vehicle. A motorcycle is going to have an unused method "RaiseBed" because you put that into Vehicle to handle dump trucks. Just unbelievable.
If you are indeed employed as a programmer, do not let your employer see your posts if you value your job.