There may probably be some good reasons for that behavior, but I find it is sort of a pity that the default new constructor can't deal with private attributes
Allowing a private attribute to be set via the constructor (in the way you're trying to do) effectively makes the attribute public, since it is now exposed to the outside world.
The whole point of private attributes is that they are unknown to the outside world, so the class author can change them without affecting users of the class.
Do you know what
Tight Coupling means? Making private attributes public, and use of inheritance both guarantee Tight Coupling.