This is a pretty basic OO question but I'm curious if I've been going overboard.
Let's assume the following hierarchy, which is an example along the lines of what I would typically create:
IVehicle
- IFlyable
- IPlane
- Plane
- IHelicopter
- Helicopter
- IDrivable
- ICar
- Car
- ITruck
- Truck
Are the interfaces IPlane, IHelicopter, ICar, and ITruck necessary, or should the classes directly implement from IFlyable and IDriveable? I'm looking for the "best oo practices" answer.