If I have classes A, B, C, D, E, and interfaces like X, Y, Z, and model a system like:
class B : A, X
class C : B, Y
class D : C, Z
class E : D
If A is an abstract base class and E is the class of interest, when I create an instance of E, would it in turn create instances of A, B, C, D, X, Y, Z in addition to E?
If that’s the case, would this create a huge performance overhead? Not memory, but runtime and GC wise.
Yes, it would create ’embedded’ instances of A, B, C and D
No, it would not create instances of X, Y and Z (because they are interfaces)
There is no extra overhead for the memory allocation or GC (of ABCD) because the instance of E is allocated as 1 block. Any runtime overhead would entirely depend on the constructors involved.
There will always be a chain of contructors (from E to A) being executed, possibly the default constructor but it’s also possible to call multiple constructors at 1 level.