Hi,
The reason is straight forward ..
Java fundamentals
If the access specifier is protected that means it can only be accessed within the package or any class that extends the current class outside the package.
If it is public then it can be accessed by all.
Apply the above funda to your doubts, everything would be clear.
---
A T U L