title: Why can't an interface have fields?
body: <p>Ignore everything up until the second edit</p>
  
  <p>I am trying to do something like this:</p>
  
  <pre><code>public interface IModifier{
     public String nameTag;
     public void foo();
  }
  </code></pre>
  
  <p>My reason for trying to do this is this:
  I have a class SpecificModifier implements IModifier
  and there are many very similar class that also implement IModifier.
  I want every class that implements IModifier to have a public String nameTag.</p>
  
  <p>Edit: I have gotten confirmation that I cannot do this, but can someone explain WHY an interface cannot require a field?</p>
  
  <p>Edit two:</p>
  
  <p>My understand of the purpose of abstract classes vs interfaces. An interface is used purely to declare necessary parts of whatever implements it, so that all the objects have common parts that can be referenced. While an abstract class is used to provide common functionality to multiple classes.</p>
  
  <p>That is a little bit of an over simplification but regardless, I still see no reason, other than an oversight by the language designers, that an interface cannot have an abstract field.</p>
  
  <p>Can anyone provide a reason why?</p>