I know what you mean about Java; way too many levels of inheritance there. Inheritance makes code less readable because state mutations are defined over multiple files. It weakens encapsulation to some extent since the instance state can be mutated from a different file seemingly ‘behind the scenes’. It requires a complete understanding of the inheritance hierarchy and all the methods of all parent classes; this puts a lot of strain on developers who have to maintain the code later.
Even though the instance may still encapsulate the full state, the fact that some of the state mutation logic is located in multiple different files makes it easy to overlook. I try to design for composition as much as possible. I can tolerate having 1 parent class for certain specific use cases but I see it more like a shortcut/convenience than a design pattern which should be followed systematically (I think this is where Java gets it wrong).