When thinking about member access modifiers, its good to think in terms of the code as you see it, rather than in terms of objects/instances. By that I mean;
Members marked private can only be accessed by code in the class in which the private member was declared.
Question 1) It follows therefore that 'private String name' which was declared in class PrivateModiferTest can be accessed by code in that class.
Question 2) When you move the code trying to access the private member to another class, then the same rule applies, so the code doesn't compile.
Hope this helps,