Porque a chamada do método q.getAreaQuadrado(); não está retornando a àrea do quadrado ?
É uma hierarquia de quatro níveis, aqui só vou mostrar as classes necessárias.
A saida do programa é:
[color=green]no método Quadrado.getAreaQuadrado
no método LadosIguais.getArea
Depois de chamar Quadrado.getAreaQuadrado[/color]
public class Teste {
	public static void main(String[] args) {
		Quadrado q = new Quadrado (2,2,2,2);
		
		q.getAreaQuadrado();
		System.out.println("Depois de chamar Quadrado.getAreaQuadrado");
	}
	
}
[code]public class Quadrado extends LadosIguais {
public Quadrado (float l1, float l2, float l3, float l4){
	super(l1, l2, l3, l4);
	super.setArea();
}
public String getAreaQuadrado(){
	System.out.println("no método Quadrado.getAreaQuadrado");
	return String.format("\nA area do quadrado é: %.2f", super.getArea());
}
}
[/code]
[code]
public class LadosIguais extends Quadrilatero{
private float area;
public LadosIguais (float l1, float l2, float l3, float l4){
	super(l1, l2, l3, l4);
}
public void setArea(){
//cacula no caso de ser um retangulo	
if (super.getLados2(0) == super.getLados2(1))
;
else
area = super.getLados2(0) * super.getLados2(1);
//calcula no caso de ser um quadrado		
if (super.getLados2(0)==super.getLados2(1) && super.getLados2(1) == super.getLados2(2))
area = super.getLados2(0)*2;
}
public float getArea(){
	System.out.println("no método LadosIguais.getArea");
	return area;
}
}[/code]
[code]public class Quadrilatero {
private float lado1, lado2, lado3, lado4;
private float lados[] = new float[4];
public Quadrilatero (float l1, float l2, float l3, float l4){
	lado1 = l1;
	lado2 = l2;
	lado3 = l3;
	lado4 = l4;
	
	lados[0] = lado1;
	lados[1] = lado2;
	lados[2] = lado3;
	lados[3] = lado4;
}
public float getLados2(int a){
	return lados [a];		
}
}[/code]

 mas isso é violar a herança de Quadrilatero