Well, here is what I think you are asking. My terminology may not be technical but I am trying to get an idea across in plain language so please forgive that.
The two easiest to understand are public and private.
Public means any thing ( any class, any object ) can get to it. THIS is the easiest.
Private means only this one class can get to it...THIS is the MOST restrictive.
Protected means that anything that can subclass the class can get to it. It does not matter whether or not you are in the same package.
Default (which in
Java is what you get when you do not type a modifier) means that anything inside the same package can get at it and nothing else.
So,
Easiest: public
next: protected
next: package(default)
Strictest: private
protected is less restrictive than package because, if the class and members being subclassed are protected they can be inherited from any package.
If a class is protected but has members with package access, then the class may be inherited from any package BUT the package access members will not be available.