How
is it possible to access the equals method using a interface reference
interface Shape {
void draw();
}
class Square implements Shape {
int length,bredth;
Square (int length,int bredth) {
this.length = length;
this.bredth = bredth;
}
@Override
public void draw(){
System.out.println("Inside Circle ");
}
public int getArea() {
return length*bredth;
}
}
class ShapeMain {
public static void main(String arg[]){
Square obj = new Square(5, 5);
System.out.println(obj. getArea());
// Calling getArea method from Square object is
very well possible
Shape s1 = obj;
System.out.println(s1.getArea( ));
//We know that Calling getArea method from Shape reference will give a compile time
//because getArea is not visible to Shape interface.
Shape s2 = obj;
System.out.println(s1.equals( s2));
//Now the Crux is here .How is it possible to call the equals method from the Shape interface which is not declared ? See below for the answer
}
}
By default All the public methods in Object class will be declared in the interface if such method is not already declared in the interface
Below is the snapshot from JLS Specification
interface Shape {
void draw();
}
class Square implements Shape {
int length,bredth;
Square (int length,int bredth) {
this.length = length;
this.bredth = bredth;
}
@Override
public void draw(){
System.out.println("Inside Circle ");
}
public int getArea() {
return length*bredth;
}
}
class ShapeMain {
public static void main(String arg[]){
Square obj = new Square(5, 5);
System.out.println(obj.
Shape s1 = obj;
System.out.println(s1.getArea(
//We know that Calling getArea method from Shape reference will give a compile time
//because getArea is not visible to Shape interface.
Shape s2 = obj;
System.out.println(s1.equals(
//Now the Crux is here .How is it possible to call the equals method from the Shape interface which is not declared ? See below for the answer
}
}
By default All the public methods in Object class will be declared in the interface if such method is not already declared in the interface
Below is the snapshot from JLS Specification