public interface Scalarable {
double scalarProduct(Point2D p);
}
public abstract class Point implements Scalarable {
public Point() { }
public String toString() {
return "Some point. ";
}
}
public class Point2D extends Point {
double x;
double y;
public Point2D(double x, double y) {
super();
this.x = x;
this.y = y;
}
public String toString() {
return super.toString() +
"2D point. X - " + x + " Y - " + y;
}
@Override
public double scalarProduct(Point2D p) {
return Math.sqrt(x * p.x + y * p.y);
}
}