I have classes A and B. Now I need to write a new class C that will use some fields and methods in both A and B but not all of them. (I'll use about 50% of the stuff from A and B).
Right now I'm thinking about inheriting from both A and B. But that will make C contain a lot of fields and methods that have no meaning.
Basically I'm using inheritance only for code reuse purposes, because otherwise I will have to copy and paste many lines of code from A and B.
Is this practice really bad? Is there a different approach?
Thanks!
Inheritance doesn't have a concept of "is half of a", so it's definitely not the way to go here. It sounds like it's a prime case for composition.
It sounds like A and B have more than one "function" since half of them each are enough to compose a C.
I'm not sure this is applicable in your case, but consider breaking A into two parts, A1 and A2 with the required functionality for C in A1. Then do the same for B into B1 and B2.
A will then be a composition of A1 and A2, B will be a composition of B1 and B2 and C will be a composition of A1 and B1. None of them with any un-necessary functionality or data.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With