title: Is the purpose of an interface to hide information?
body: <p>Given that interfaces are also used to help hide information, giving the user only a subset of the possible methods they are allowed to use, and, let's say, I have a <code>Person</code> class and interface <code>IPerson</code>.</p>
  
  <p>Now in main, I'm allowed to do</p>
  
  <pre><code>IPerson testy = new Person();
  </code></pre>
  
  <p>or </p>
  
  <pre><code>Person testy = new Person();
  </code></pre>
  
  <p>So really I'm not restricted from using Person still. So how does the interface truly hide data?</p>