Buenas dejo aquí mi solución del ejercicio. Sin más y muy interesante lo de sobreescribir equals, y cualquier método, que en tiempo de ejecución busca si la instancia a la que apunta en ese momento tiene sobreescrito X método del contenedor.
Por cierto no he sido capaz de detectar con esta configuración de ejercicio ningun elemento comun en la clase Figura, si fuera mas extenso supongo que saldría algo.
Clase Figura
/**
* Clase Figura. Ejercicio 694B
*
* @author Lorenzo31
* @version 27.04.2015
*/
public class Figura{
public Figura(){ /*vacio*/ }
}
Clase Circulo
/**
* Clase Circulo extiende a Figura. Ejercicio 694B
*
* @author Lorenzo31
* @version 27.04.2015
*/
public class Circulo extends Figura {
private double radio;
private final static double PI = 3.1416;
//Constructor
public Circulo(double radio){
this.radio = radio; }
//Setter
public void setRadio(double radio){ this.radio = radio; }
//Getters
public double getRadio(){ return radio; }
public double getPi() { return PI; }
//Método calcular area
public double calcularArea(){ return PI * Math.pow(radio,2); }
//Método sobreEscrito Equals
public boolean equals(Object obj){
if (obj instanceof Circulo){ Circulo temp = (Circulo) obj;
if( this.radio == temp.getRadio() ) { return true; } else { return false; }
}else { return false; }
}
}
Clase Cuadrado
/**
* Clase Cuadrado extiende a Figura. Ejercicio 694B
*
* @author Lorenzo31
* @version 27.04.2015
*/
public class Cuadrado extends Figura {
private double lado;
//Constructor
public Cuadrado(double lado){
this.lado = lado; }
//Getter
public double getLado(){ return lado; }
//Setter
public void setLado(double lado){ this.lado = lado; }
//Método calcular area
public double calcularArea(){ return Math.pow(lado,2); }
//Método equals sobreescrito
public boolean equals(Object obj){
if(obj instanceof Cuadrado){ Cuadrado temp = (Cuadrado) obj;
if (this.lado == temp.getLado() ){ return true; } else { return false; }
}else { return false; }
}
}
Clase TestIgualdad
/**
* Clase TestIgualdad. Ejercicio 694B
*
* @author Lorenzo31
* @version 27.04.2015
*/
public class TestIgualdad {
public static void main (String [] args) {
Circulo circulo1 = new Circulo(5.5);
Circulo circulo2 = new Circulo (6.5);
Circulo circulo3 = new Circulo(5.5);
Cuadrado cuadrado1 = new Cuadrado(4.1);
Cuadrado cuadrado2 = new Cuadrado(4.1);
Cuadrado cuadrado3 = new Cuadrado(4.3);
System.out.println("Son iguales el cuadrado1 y el cuadrado2: " + cuadrado1.equals(cuadrado2));
System.out.println("Son el mismo objeto cuadrado1 y cuadrado2: " + (cuadrado1 == cuadrado2));
System.out.println("Son iguales el cuadrado1 y el cuadrado3: " + cuadrado3.equals(cuadrado1) );
System.out.println("Son iguales el circulo1 y el circulo2: " + circulo2.equals(circulo1) );
System.out.println("Son iguales el circulo1 y el circulo3: " + circulo1.equals(circulo3) );
}
}