I have a homework and I need to evaluate which approach is better according to GRASP **"Protected Variation"**.

I found this link that answers part of my questioning: In C++ why have header files and cpp files?

However, what I want to know is how much C++ way of working is better for extensibility and for code reuse than Java because everything is defined in a conjoint file ?

Thanks for the help !

Edit: Just to make sure that this is not a debate, I want to know why does Java does not do like in C and promotes the separation between class definitions and class implementations. Are there any advantages with that way of working or proceeding, especially on reuse or extensibility ?