ejemlo: polígono
Se redinen los métodos por razones de eficiencia
(más rapidez).
class Poligono |
public class Poligono {
private final Punto2D[] vertices;
public Poligono(Punto2D... vertices) { this.vertices = vertices;
} public
double getPerimetro() { double p = 0; Punto2D p1 = vertices[vertices.length
- 1]; for (Punto2D p2 : vertices) p += p1.getDistancia(p2); return p;
} } |
class
Triangulo extends Poligono |
public class
Triangulo extends Poligono { public
Triangulo(Punto2D A, Punto2D B, Punto2D C) { super(A, B,
C); } } |
class Cuadrilatero extends
Poligono |
public class Cuadrilatero
extends Poligono {
public Cuadrilatero(Punto2D A, Punto2D B, Punto2D C, Punto2D D) {
super(A, B, C, D);
} } |
class Rectangulo extends
Cuadrilatero |
public class Rectangulo extends Cuadrilatero {
private final double base;
private final double altura;
public Rectangulo(Punto2D centro, double base, double altura) { super(centro.desplazado(-base
/ 2, altura / 2), centro.desplazado(base / 2,
altura / 2), centro.desplazado(base / 2,
-altura / 2), centro.desplazado(-base / 2,
-altura / 2)
);
this.base = base;
this.altura = altura;
} @Override public
double getPerimetro() { return 2 * base + 2 * altura;
} } |
class Rombo
extends Cuadrilatero |
public class
Rombo extends Cuadrilatero { private final double eje1; private final double eje2; public Rombo(Punto2D centro, double eje1,
double eje2) { super(centro.desplazado(0,
eje2 / 2), centro.desplazado(eje1 / 2, 0), centro.desplazado(0, -eje2 /
2), centro.desplazado(-eje1 / 2, 0) ); this.eje1 = eje1; this.eje2 = eje2; } @Override public
double getPerimetro() { double sx = eje1 / 2; double sy = eje2 / 2; return 4 * Math.sqrt(sx * sx + sy *
sy); } } |
Temas relacionados
145. Redefinición de métodos [method overriding] (concepto)