The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.
Someone has cited this example before me .. as an dis-advantage of Object oriented programming.
I didn't get the core .. What he wanted to say.
The same problem can be solved by using function programming instead of object oriented programming.
I think, the quote wants to say that sometimes you want a very specific functionality of an object, however if you want to use it, you always have to use the whole object.
That way of thinking is not 100% correct, since it just describes a monolithic way of working with Object Oriented Programming (OO). It is very possible to design light-weight objects (just "bananas") which interact with each other or are composable in order to create some kind of functionality.
In that sense, the quote is also applicable to Functional Programming (FP). You can create one big god-state that you pass around, which would contain the banana, the gorilla and the entire jungle.
A concept is only as good as the person using it.
This is known as a Gorilla-banana problem.
The drawback of classical OOP is that you have to define classes all the time even for simple features and main problem is that you can extend only from one class. It came from years of bad practice when OOP was very popular and many developers have been writing a lot of complex code when it wasn't necessary. I've been there many times as well. I asked one of my team members to implement a simple feature and when I checked a PR, I've seen that feature (banana I needed) was wrapped into the class (Gorilla) and interface (entire jungle). I just needed a function...
The main problem of OOP is that a lot of people misunderstand OOP. It should be called a "Messaging Oriented Programming". Many developers are overcomplicating things and trying to make everything an object, every entity, while what they have to deal in a software is just a data and messaging between a data in a MVS (Minimum viable software). Developers are also afraid of writing just a simple code thinking that it is for novice and inexperienced engineers, while totally contrary, this is what distinguish fan from real professional who can implement complicated logic in a maximum simple way.
It is still possible to write clean and maintainable OOP if language allows you to do composition like Object.assign() in JavaScript or traits in PHP.
After all code is bad not because of paradigm but because of a person who doesn't applies software engineering principles and good practice, and doesn't uses right tool for the right job.
Follow the "Lego principle" - build small and totally independent blocks, functions, objects without side effects.
"Keep it simple" (c)