Created
September 3, 2016 16:50
-
-
Save aboglioli/0b6e62add06fa316489a7fc93de1f35f to your computer and use it in GitHub Desktop.
Ejemplo sencillo de utilización de equals(Object object) sobre-escribiéndolo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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