InterfaceTester.java
//file: InterfaceTester.java
interface PointInterface {
public void move(int dx, int dy);
}
interface RealPointInterface extends PointInterface {
public void move(float dx, float dy);
public void move(double dx, double dy);
}
class Point implements PointInterface {
int x = 0, y = 0;
public void move(int dx, int dy) { x += dx; y += dy; }
int getX() { return x; }
int getY() { return y; }
int color;
}
class RealPoint extends Point implements RealPointInterface {
float x = 0.0f, y = 0.0f;
public void move(int dx, int dy) { move((float)dx, (float)dy); }
public void move(float dx, float dy) { x += dx; y += dy; }
public void move(double dx, double dy) { move((float)dx, (float)dy); }
int getX() { return (int)Math.floor(x); }
int getY() { return (int)Math.floor(y); }
}
public class InterfaceTester {
public static void main(String[] args) {
RealPoint rp = new RealPoint();
Point p = rp;
rp.move(1.718298f, 4.14159f);
rp.move(1.0d, -1.0d);
p.move(1, -1);
show(p.x, p.y); // (0,0)
show(rp.x, rp.y); // (3.718298,2.14159)
show(p.getX(), p.getY()); // (3,2)
show(rp.getX(), rp.getY()); // (3,2)
}
static void show(int x, int y) { // Overloading show()
System.out.println("(" + x + ", " + y + ")");
}
static void show(float x, float y) {
System.out.println("(" + x + ", " + y + ")");
}
}