As interfaces herdam da Object
classe em Java?
Não, eles não. E também não existe uma interface "raiz" comum herdada implicitamente por todas as interfaces (como no caso das classes). (*)
Se não, como podemos chamar o método da classe de objeto na instância da interface
Uma interface declarou implicitamente um método para cada método público em Object
. Portanto, o equals
método é implicitamente declarado como membro de uma interface (a menos que já o herda de uma superinterface).
Isso é explicado em detalhes na Especificação da Linguagem Java, § 9.2 Membros da Interface .
9.2 Membros da interface
[...]
- Se uma interface não possui superinterfaces diretas, a interface declara implicitamente um método de membro público abstrato m com assinatura s , tipo de retorno r , e lança a cláusula t correspondente a cada método de instância pública m com assinatura s , tipo de retorno r e lança a cláusula t declarado em
Object
, a menos que um método com a mesma assinatura, o mesmo tipo de retorno e uma cláusula throws compatível seja declarado explicitamente pela interface.
[...]
Esta postagem foi reescrita como um artigo aqui .
(*) Observe que a noção de ser um subtipo de não é equivalente a herdar de : Interfaces sem super interface são de fato subtipos de Object
( § 4.10.2. Subtipagem entre tipos de classe e interface ), mesmo que não sejam herdados de Object
.