title: Reasons to use private instead of protected for fields and methods
body: <p>This is a rather basic OO question, but one that's been bugging me for some time.</p>
  
  <p>I tend to avoid using the 'private' visibility modifier for my fields and methods in favor of <code>protected</code>.</p>
  
  <p>This is because, generally, I don't see any use in hiding the implementation between base class and child class, except when I want to set specific guidelines for the extension of my classes (i.e. in frameworks). For the majority of cases I think trying to limit how my class will be extended either by me or by other users is not beneficial.</p>
  
  <p>But, for the majority of people, the <code>private</code> modifier is usually the default choice when defining a non-public field/method.</p>
  
  <p>So, can you list use cases for <code>private</code>? Is there a major reason for always using private? Or do you also think it's overused?</p>