Do interfaces inherit from Object class in java
Do interfaces inherit from
Object
class in Java?
No, they don't. And there is no common "root" interface implicitly inherited by all interfaces either (as in the case with classes) for that matter.(*)
If no then how we are able to call the method of object class on interface instance
An interface implicitly declared one method for each public method in Object
. Thus the equals
method is implicitly declared as a member in an interface (unless it already inherits it from a superinterface).
This is explained in detail in the Java Language Specification, § 9.2 Interface Members.
9.2 Interface Members
[...]
- If an interface has no direct superinterfaces, then the interface implicitly declares a public abstract member method m with signature s, return type r, and throws clause t corresponding to each public instance method m with signature s, return type r, and throws clause t declared in
Object
, unless a method with the same signature, same return type, and a compatible throws clause is explicitly declared by the interface.[...]
This post has been rewritten as an article here.
(*) Note that the notion of being a subtype of is not equivalent to inherits from: Interfaces with no super interface are indeed subtypes of Object
(§ 4.10.2. Subtyping among Class and Interface Types ) even though they do not inherit from Object
.
Object
is a supertype of any interface [1]
However, an interface does not implements
, extends
, or, "inherit from" Object
.
JLS has a special clause to add Object
methods into interfaces [2]
[1] http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.10.2
[2] http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html#9.2