I guess we are getting off topic, but I also guess (ignoring the time-to-response) we are getting into an IRC like chat....
My programming style involves deep inheritance with as little redundant code as possible. I often wonder how that affects program behavior as opposed to programs written by people who don’t use inheritance and don’t have the same class being used by so many parts of program.
There is ton of stuff in that sentence of yours.
But first, if that is the kind of stuff that interests you, you want to look into design patterns.
There is tons of it on the net. Try to find sources, that do not just describe how the pattern looks like. Most important is the description of the motivation. Why would you use the pattern. What would you improve. How does it affect future maintenance and extension of the code.
Google got me that page, they do have a nice list of patterns, but I do not know how well they are explained.
https://www.tutorialspoint.com/design_pattern/index.htmIf you really get into it, one of the ultimate works on the topic (advanced level) is by the Gang of Four
https://en.wikipedia.org/wiki/Design_Patterns
From your statement I would say there are some aspect of OO that you have entirely down, and could do in your sleep. Time to expand.
Have a look at "delegation over inheritance" or "composition over inheritance".
You seem to write your classes for technical reasons: reduction of code duplication.
Each class can be seen as having a responsibility. Did you plan those? Can you specify a clear list for each class? Overlaps between responsibility? Or mixing of unrelated responsibility?
As you can see, there is tons of stuff out there. A bit of copy and pasted code, can bite you later that is true. But grouping the wrong code (or data or both) together, or splitting up code that shouldn't be split => that will bite you, stab you and laugh at you when you look at it in a few years.