Hola, aquí dejo mi solución a este ejercicio.
No me he liado mucho y he creado, como dice el texto, una clase padre con un atributo que heredan las clases hijas, las cuales solo difieren por el cuerpo del metodo propio.
Para sobreescibir el metodo en las clases hijas, he incluido el mismo metodo en la clase padre pero con una salida nula (0.0).
Clase Figura:
public class Figura
{
protected static final double Pi=3.14;
protected double dimensionPrincipal;
public Figura (double d){
dimensionPrincipal=d;
}
public double getDimensionPrincipal(){
return dimensionPrincipal;
}
public double calcularArea(){
return 0.0;
}
}
Clase Cuadrado:
public class Cuadrado extends Figura
{
//no tiene atributos propios
public Cuadrado (double d){
super(d);
}
//solo tiene metodo propio
//la dimension principal de un cuadrado es el lado
//el area de un cuadrado es el lado al cuadrado.
public double calcularArea(){
return (super.getDimensionPrincipal()*super.getDimensionPrincipal());
}
public boolean equals(Object obj){
if(obj instanceof Cuadrado){
Cuadrado tmp=(Cuadrado)obj;
if(super.dimensionPrincipal==(tmp.dimensionPrincipal)){
return true;
}else{
return false;
}
}
return false;
}
}
Clase Circulo:
public class Circulo extends Figura
{
//no tiene atributos propios
public Circulo(double d){
super(d);
}
//solo tiene metodo propio
//la dimension principàl seria el radio
//el area de un circulo se calcula multiplicando pi por el radio al cuadrado.
public double calcularArea(){
return ((super.getDimensionPrincipal()*super.getDimensionPrincipal())*Pi);
}
public boolean equals(Object obj){
if(obj instanceof Circulo){
Circulo tmp=(Circulo)obj;
if(super.dimensionPrincipal==(tmp.dimensionPrincipal)){
return true;
}else{
return false;
}
}
return false;
}
}
Clase main:
public class TestEquals
{
public static void main(String[] Argas){
Figura cuadrado1=new Cuadrado(2);
Figura cuadrado2=new Cuadrado(5);
Figura cuadrado3=new Cuadrado(2.1);
Figura cuadrado4=new Cuadrado(2.0);
Figura circulo1=new Circulo(2.5);
Figura circulo2=new Circulo(2.8);
Figura circulo3=new Circulo(4);
Figura circulo4=new Circulo(2.5);
System.out.println("El area del cuadrado1 es: "+ cuadrado1.calcularArea());
System.out.println("El area del cuadrado2 es: "+ cuadrado2.calcularArea());
System.out.println("El area del cuadrado3 es: "+ cuadrado3.calcularArea());
System.out.println("El area del cuadrado4 es: "+ cuadrado4.calcularArea());
System.out.println("El area del circulo1 es: "+ circulo1.calcularArea());
System.out.println("El area del circulo2 es: "+ circulo2.calcularArea());
System.out.println("El area del circulo3 es: "+ circulo3.calcularArea());
System.out.println("El area del circulo4 es: "+ circulo4.calcularArea());
System.out.println("¿Son iguales el cuadrado1 y el cuadrado2?: " + cuadrado1.equals(cuadrado2));
System.out.println("¿Son iguales el cuadrado1 y el cuadrado3?: " + cuadrado1.equals(cuadrado3));
System.out.println("¿Son iguales el cuadrado1 y el cuadrado4?: " + cuadrado1.equals(cuadrado4));
System.out.println("¿Son iguales el circulo1 y el circulo2?: " + circulo1.equals(circulo2));
System.out.println("¿Son iguales el circulo1 y el circulo3?: " + circulo1.equals(circulo3));
System.out.println("¿Son iguales el circulo1 y el circulo4?: " + circulo1.equals(circulo4));
}
}
Un saludo y espero vuestros comentarios/consejos.