Here is the difference for public, secure, and private:

For a method, if you set up public access, it can be accessed by all classes in all packages of your project, if you set protection, it can only be accessed by all classes within the same package or subclass that extend the abstract class.
On the issue no. 2: Yes, it is.
Crazenezz
source share