what are the differences between a public method and a protected one?
If the class member declared as public then it can be accessed everywhere. If the class members declared as protected then it can be accessed only within the class itself and by inheriting and parent classes. If the class members declared as private then it may only be accessed by the class that defines the member.