title: Interface defining a concrete method - Under what circumstances is this allowed?
body: <p>While going through spring security modules I came across this piece of code inside the Principal Interface class. My understanding is that Interfaces do not implement anything concrete. </p>
  
  <p>What is the reason for the below piece of code inside an Interface ?</p>
  
  <pre><code>public interface Principal {     
   //other method definitions
  
    public default boolean implies(Subject subject) {
      if (subject == null)
        return false;
      return subject.getPrincipals().contains(this);
    }
  }
  </code></pre>