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()); }