Public access modifier lets a method or instance variable freely be accessed directly by an object of a class outside of the parent class.
Private access modifier restricts a method or instance variable from being accessed directly by an object of a class outside of the parent class. However you can still freely use private instance variables and private methods within the parent class.
A state represented by attributes,
A behavior represented by methods,
A identity represented by a unique name
Declare all instance variables in a class as private.
Make any helping methods private
Write comments within the class. - definition to describe implementation details
Place a comment before each public method heading that fully specifies how to use the method