public class OverloadedPoint {
    // Repasemos method overloading (Sobrecarga de métodos)
    // Y veamos algo nuevo con toString()
    private double x;
    private double y;
    /*
    public OverloadPoint() {
        this.x = 0;
        this.y = 0;
        // Esto es lo que haria el constructor por defecto
        // si no existiera _ningun_ constructor
    }
     */
    public OverloadedPoint(double x, double y) {
        this.x = x;
        this.y = y;
    }
    public OverloadedPoint() {
        this((int)(Math.random()*10),
             (int)(Math.random()*10));
        // x e y del 0 al 9
    }
    public double getX() {
        return this.x;
    }
    public double getY() {
        return this.y;
    }
    public void setX(double x) {
        this.x = x;
    }
    public void setY(double y) {
        this.y = y;
    }
    @Override
    public String toString() {
        return "(" + this.x + "," + this.y + ")";
    }
    public String toString(String s) {
        return s + ": (" + this.x + "," + this.y + ")";
    }
    /*
    public void toString(String s) {
        // ERR: Method toString(String) already defined in this class
        // No se pueden tener metodos con el mismo nombre y  misma sequencia
        // de tipos como argumentos aunque tengan diferente tipo de retorno.
    }
     */
}
