Inheritance isn't the only way to re-use code. Using inheritance won't solve your problems, and it tends to give you new ones: <a href="http://en.wikipedia.org/wiki/Fragile_base_class" rel="nofollow">http://en.wikipedia.org/wiki/Fragile_base_class</a>
I think OOP is easy, so long as the system you are modelling can in fact be broken down sensibly into distinguishable objects. However, a lot of people try to use an OOP approach when this is not appropriate and end up getting into a bit of a mess.