Yes, that's the reason why it is important to distinguis h between types and implementation classes. Types should describe a taxonomy of "things" as well as possible and according to the need of the client. Implementation classes should be used to reuse/factor out as much code as possible (DRY) while providing implementations for the types.
Java interfaces are nice because they can be used as types while one or many classes can implement them.