Well, there’s plenty to agree with and plenty to disagree with. If you say you are ready to reuse and you did so by copying code to a new project as-is, I’m sorry to say that it has nothing to do with OOP. Reusability means inheritance. Copy pasting stuff to a different project is a different story. You need the whole class, a method, the whole hierarchy? Whether you can do it depends on how well you thought out your initial project. There is no reason to expect that inheritance would facilitate copy paste.

Secondly, your weak base class issue. Sorry, but if your tests related to child class still pass with a breaking change then you have a different kind of problem.