Clases abstractas con métodos abstractos

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

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos