It can lead to tight coupling and inflexible hierarchies.
Subclassing in Java creates a strong relationship between the subclass and its superclass. This can lead to tight coupling, where changes in the superclass might necessitate changes in all subclasses. Additionally, if the hierarchy is not well-designed, it can become inflexible, making future changes difficult. For example, if a `PhysicalProduct` class extends `Product`, but later on you need to represent a different kind of product that doesn't fit well into this hierarchy, it might require significant refactoring.