The keyword private indicates that a member is private to that class.
So in the contrived example where you have a constructor of the form public MyClass(MyClass myObj), it is indeed valid to refer to private members of myObj directly.
Why? Because the object reference being passed in is of the type that is being constructed. The code is all there in the class.
With other words, private doesn't restrict access to the object, but to the class.
This makes sense when you think about what access modifiers are good for: managing code dependencies.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
private doesn't restrict access to the object, but to the class.
The a.num can be seen just because a appears in class A. a is an object of class A, private members can be seen in the class, so a.num can be seen in A. Can I catch you meaning?
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus