Let's consider the following simple code in Java.
package temppkg; interface Interface { @Override public abstract boolean equals(java.lang.Object arg); @Override public abstract String toString(); public void show(); } final class Demo implements Interface { public void show() { System.out.println("Method invoked."); } } final public class Main { public static void main(String...args) { new Demo().show(); } } In the above code snippet, the interface named Interface has some Object class methods from JDK and they are with the @Override annotation even though they are abstract. Now, the class Demo has implemented Interface and has not implemented the equals() and the toString(); methods. Still the compiler doesn't complain and the program is running successfully. Why? What is the relation between interfaces and the object class in Java?