Program logical organization (such as namespace, package, etc.) can be different from the distribution mode (such as assembly, JAR package, etc.) at the time of deployment, then mutual access between different CLASS should limit or physical distribution on logical organization or physical distribution What is limited?
The Java language itself uses a logical organization method to limit the method, that is, you can access private classes in java.lang and can compile, as long as your own code is in java.lang [I guess, I haven't tried] The physical distribution method is used to limit the physical distribution, which may be related to the default classloader, even if you are compiled, but the class under the same package is divided into different JAR packets, the access to private class may be wrong. [I guess, I didn't tried] .NetCls didn't know, I hope to add C # to limit the physical distribution method, which is the assembly, which is so since language to run.
Personal privilege control, reasonable and flexible; Java is different when logic and physical organizations are different, not forced to move a class awkward to the current package, that is, declare it as public, and once declares as public, you Can't control it again.
Traditional access control has exceeded the scope of the language itself, which belongs to the platform characteristics.