package com.trifulcas.herencia.abstraccion;
public abstract class FiguraGeometrica {
private int lados;
public FiguraGeometrica(int lados) {
super();
this.lados = lados;
}
/**
* @return the lados
*/
public int getLados() {
return lados;
}
/**
* @param lados the lados to set
*/
public void setLados(int lados) {
this.lados = lados;
}
// En una clase abstracta puedo crear métodos abstractos
// Los métodos abstractos tienen la palabra clave abstract
// Y no tienen implementación: Son como una plantilla
// Obligo a todas las clases derivadas a implementar este método
public abstract double area();
@Override
public String toString() {
return "FiguraGeometrica [lados=" + lados + "]";
}
}
package com.trifulcas.herencia.abstraccion;
public class Cuadrado extends FiguraGeometrica {
private int lado;
public Cuadrado(int lado) {
super(4);
this.lado=lado;
}
@Override
public double area() {
return lado*lado;
}
}
package com.trifulcas.herencia.abstraccion;
public class Triangulo extends FiguraGeometrica {
public Triangulo() {
super(3);
}
@Override
public double area() {
// TODO Auto-generated method stub
return 0;
}
}
// FiguraGeometrica foo=new FiguraGeometrica(3);
Cuadrado c=new Cuadrado(2);
Triangulo t=new Triangulo();
System.out.println(c);
System.out.println(t);
ArrayList<FiguraGeometrica> figuras=new ArrayList<>();
figuras.add(t);
figuras.add(c);
for(FiguraGeometrica f: figuras) {
System.out.println(f.area());
}