title: What is the purpose of abstract methods from the Object class in functional interfaces?
body: <p>I understand, that multiple abstract methods in functional interfaces wouldn't work, as the compiler cannot know which abstract method to use when the lambda expression is declared. I've also come to know, that additional abstract method signatures may be declared in a functional interface, if they match the ones of the default Object class:</p>
  
  <blockquote>
    <p>A functional interface is an interface that has just one abstract
    method (aside from the methods of Object), and thus represents a
    single function contract.</p>
  </blockquote>
  
  <p>Source: <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-9.html#jls-9.8" rel="nofollow noreferrer">Java Language Specification</a>)</p>
  
  <p>I still cannot figure out, however, why an interface should ever declare such abstract methods like <code>boolean equals(Object o)</code> in a functional interface (or any other interface) and why this exception was made in the spec for functional interfaces. What is the point of declaring such abstract methods, which exist always anyway?</p>