A flexibilidade de utilização das classes abstratas é similar às interfaces. Podemos utilizar as classes abstract para instanciar objetos de classes herdadas (Atenção: desde que sejam classes reais!):

public class Principal {

	public static void mostrar(Forma2 form){
		form.mostrar();
	}
	
	public static void main(String[] args) {
		Forma2 figura = new Retangulo2(5,4);
		mostrar(figura);
	}
}

O exemplo abaixo mostra a declaração de uma classe polígono que não possui a implementação dos métodos area() e perimetro(), portanto a classe teve ser que declarada como abstract:

public abstract class Poligono extends Forma2{
	int nlados;
	float lado;
	
	public Poligono(int nlados, float lado){
		this.nlados=nlados;
		this.lado=lado;
	}
	public void mostrar(){
		System.out.printf("Poligono com  %d lados de %f\r",nlados, lado);
	}
}
Copyright © 2014 AIEC.