Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does an interface by default extend Object? [duplicate]

Tags:

java

If you define a interface like below

interface I1{

}

The in any code section you can write like

I1 i1;
i1.equals(null);

Then from where the equals method come, is the interface also extends the super class Object ?, if that true how an interface can extends a class?

Suppose let the interface extends the super class Object , then if you see why the collection interface like Set thave define the equals() and hashCode() method ?. All the class extends the Object class so if you define any abstract method in a interface which present in Object class then who implement the interface they no need to implements those method. Like in below code

interface I1{
String toString();
}

class A implements I1{

}

Here the class A no need to implements the method toString() as it's present in Object class. Then what is the objective of defining those method in collection interface as they can't force there implementation class to implement those method.

like image 557
Krushna Avatar asked Dec 08 '12 09:12

Krushna


People also ask

Does interface extend object class by default?

Object is a class, and interfaces can not extend classes, so "no" - the interface doesn't inherit anything from any class.

What happens when interface extends interface?

Extending InterfacesAn interface can extend another interface in the same way that a class can extend another class. The extends keyword is used to extend an interface, and the child interface inherits the methods of the parent interface. The following Sports interface is extended by Hockey and Football interfaces.

Does interface also extend object class?

Interfaces in java don't inherit from Object class. They don't have default parent like classes in java.

Does an interface extend another interface?

Defining an InterfaceAn interface can extend other interfaces, just as a class subclass or extend another class. However, whereas a class can extend only one other class, an interface can extend any number of interfaces. The interface declaration includes a comma-separated list of all the interfaces that it extends.


1 Answers

Then from where the equals method come, is the interface also extends the super class Object ?, if that true how an interface can extends a class?

The Java Language Specification deals with this explicitly.

From section 9.2:

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.

Basically, this is so that you can use equals, hashCode etc - because the way that the Java language is specified means that any concrete implementation of the interface will be a class, and that class must ultimately be a subclass of Object, so the members will definitely be present.

To put it another way, while the interface itself doesn't extend Object, it is known that any implementation will.

Here the class A no need to implements the method toString() as it's present in Object class. Then what is the objective of defining those method in collection interface as they can't force there implementation class to implement those method.

Usually this is just done for clarity, e.g. to document what is expected of an implementation in terms of the members declared in Object.

like image 100
Jon Skeet Avatar answered Sep 24 '22 14:09

Jon Skeet