Private is the most
restrictive, while public is the least restrictive. There is no real
difference between protected and the default type (also known as package
protected) within the context of the same package, however the protected
keyword allows visibility to a derived class in a different package.