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