Scopes of Member Names in Java
public: Accessible inside & outside of its class
and subclasses.
private: Accessible only within its class definition.
protected: Accessible within its class definition
and those of its descendant classes; also
accessible from code within the same package.
package: Accessible within the same package
(possibly from otherwise unrelated classes).