133.Polimorfismo [polimorphism] (concepto)

Es la posibilidad de que una variable se refiera a objetos de diferentes clases. El comportamiento exacto depende de la clase exacta del objeto referido.

Tenemos polimorfismo cuando:

·         diferentes clases implementan una misma interface

·         unas clases son subclases de otras

interface Punto

public interface Punto {

    double getX();

    double getY();

    double getModulo();

    double getAngulo();

}     

class Cartesianas

class Polares

public class Cartesianas

        implements Punto {

    private double x;

    private double y;

 

    public Cartesianas(double x,

                       double y) {

        this.x = x;

        this.y = y;

    }

 

    public double getX() {

        return x;

    }

 

    public double getY() {

        return y;

    }

 

    public double getModulo() {

        return

          Math.sqrt(x*x + y*y);

    }

 

    public double getAngulo() {

        return Math.atan2(y, x);

    }

}

public class Polares

        implements Punto {

    private double modulo;

    private double angulo;

 

    public Polares(double modulo,

                   double angulo) {

        this.modulo = modulo;

        this.angulo = angulo;

    }

 

    public double getX() {

        return modulo *

               Math.cos(angulo);

    }

 

    public double getY() {

        return modulo *

               Math.sin(angulo);

    }

 

    public double getModulo() {

        return modulo;

    }

 

    public double getAngulo() {

        return angulo;

    }

}

 

Punto p = new Cartesianas(1.0, 1.0);

Punto q = new Polares(1.0, 1.0);

 

p.getModulo()

utiliza Cartesianas.getModulo()

q.getModulo()

utiliza Polares.getModulo()

Ver "Elección dinámica de método".

Temas relacionados

Vademécum