What is the output of the following snippets:
Shape.java:
public interface Shape {
public void draw();
private void calculateArea();
public void printArea();
}
Rectangle.java
public class Rectangle implements Shape {
private final int x1, x2, y1, y2;
private int area;
public Rectangle(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
@Override
public void calculateArea() {
area = Math.abs((x1 - x2) * (y1 - y2));
}
@Override
public void draw() {
// TODO Auto-generated method stub
}
@Override
public void printArea() {
calculateArea();
System.out.println("My area is " + area + ".");
}
}
test.java:
public class test {
public static void main(String[] args) {
Shape s = new Rectangle(0, 0, 1, 1);
s.printArea();
}
}
. . . . . . . . . . . . . .
Answer
My area is 1.
Explanation
Interfaces may not implement anything. So it makes no sense to define private methods. Nevertheless it seems to be valid Java code.