Skip to content

Instantly share code, notes, and snippets.

@aboglioli
Created September 3, 2016 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aboglioli/0b6e62add06fa316489a7fc93de1f35f to your computer and use it in GitHub Desktop.
Save aboglioli/0b6e62add06fa316489a7fc93de1f35f to your computer and use it in GitHub Desktop.
Ejemplo sencillo de utilización de equals(Object object) sobre-escribiéndolo
/**
* No es necesario declarar que extiende de Object la clase Persona, porque lo
* hace de forma implícitca. Sólo lo pongo para que veas que equals(...) es un
* método que proviene de Object y se está sobreescrbiendo ese método.
*/
class Persona extends Object {
private String nombre;
private String genero;
public Persona(String nombre) {
this.nombre = nombre;
this.genero = "Sin definir";
}
public void setGenero(String genero) {
this.genero = genero;
}
public String getGenero() {
return this.genero;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getNombre() {
return this.nombre;
}
/**
* Se sobreescribe el método equals(...). Para hacer esto hay que utilizar el
* método tal cual está definido en Objecto:
* https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)
*/
@Override
public boolean equals(Object pers) {
// Como se recibe Object, un tipo de dato genérico, se debe realizar la
// conversión a Persona explícitamente para poder llamar al método
// getNombre() que sólo conoce Persona y no su padre Object.
Persona persona = (Persona)pers;
if (this.nombre.equals(persona.getNombre())) {
return true;
}
return false;
// return this.nombre.equals(nombre);
}
}
class Hombre extends Persona {
public Hombre(String nombre) {
super(nombre);
super.setGenero("Hombre");
}
}
class Mujer extends Persona {
public Mujer(String nombre) {
super(nombre);
// Se cambia "Sin definir" de Persona por "Mujer".
super.setGenero("Mujer");
}
}
class EqualsEjemplo {
public static void main(String[] args) {
Hombre carlosHombre = new Hombre("Carlos");
Mujer carlosMujer = new Mujer("Carlos");
// Se pasa un tipo de dato Mujer, equals implícitamente lo convierte en Object
// porque es lo que recibe. Dentro de Object se convierte a Persona.
// Esto se puede porque Mujer extiende tanto de Object como de Persona, ya
// que persona exitende de Object.
if (carlosHombre.equals(carlosMujer)) {
System.out.println(carlosHombre.getNombre() + " (genero " + carlosHombre.getGenero() + ") " +
"tiene el mismo nombre que " + carlosMujer.getNombre() + " (genero " + carlosMujer.getGenero() + ")");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment