bloque3:overrideobject
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
bloque3:overrideobject [05/03/2018 12:05] – [Sobrescritura de métodos de la clase Object] Fernando Valdeón | bloque3:overrideobject [16/09/2024 20:53] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== Sobrescritura de métodos de la clase Object ====== | ====== Sobrescritura de métodos de la clase Object ====== | ||
- | En Java la superclase | + | En Java la clase de la que heredan (directa o indirectamente) |
La sobrescritura de métodos heredados se usa para definir el comportamiento específico de un método que tiene un funcionamiento demasiado general en una superclase. Esto se denomina '' | La sobrescritura de métodos heredados se usa para definir el comportamiento específico de un método que tiene un funcionamiento demasiado general en una superclase. Esto se denomina '' | ||
Línea 17: | Línea 17: | ||
|Object clone()|Devuelve una copia del objeto. El objeto debe implementar la interface [[https:// | |Object clone()|Devuelve una copia del objeto. El objeto debe implementar la interface [[https:// | ||
|int hashCode|Devuelve el código hash del objeto. Está enfocado en el uso de tablas //Hash// como las provistas por [[https:// | |int hashCode|Devuelve el código hash del objeto. Está enfocado en el uso de tablas //Hash// como las provistas por [[https:// | ||
- | |Class getClass()|Devuelve la clase del objeto| | ||
|void finalize()|Método llamado por el recolector de basura, cuando no quedan referencias a ese objeto| | |void finalize()|Método llamado por el recolector de basura, cuando no quedan referencias a ese objeto| | ||
+ | |Class getClass()|Devuelve la clase del objeto| | ||
|void notify()|Despierta un hilo de ejecución que está en estado de espera| | |void notify()|Despierta un hilo de ejecución que está en estado de espera| | ||
|void notifyAll()|Despierta todos los hilos que están en espera| | |void notifyAll()|Despierta todos los hilos que están en espera| | ||
Línea 25: | Línea 25: | ||
|void wait(long time, int nanos)|Pone en espera al hilo de ejecución| | |void wait(long time, int nanos)|Pone en espera al hilo de ejecución| | ||
- | Dependiendo de la finalidad de nuestra clase nos podría interesar sobrescribir unos métodos u otros. Los métodos más comunes a la hora de sobrescribir son: toString(), equals(), hashCode() y clone() | + | Dependiendo de la finalidad de nuestra clase nos podría interesar sobrescribir unos métodos u otros. |
+ | |||
+ | === Impedir la sobrescritura === | ||
+ | Todo método declarado como '' | ||
===== Generar métodos desde Eclipse ===== | ===== Generar métodos desde Eclipse ===== | ||
{{ : | {{ : | ||
- | Eclipse ofrece | + | Los IDEs ofrecen |
Desde la pestaña '' | Desde la pestaña '' | ||
- | Pulsando sobre la generación de esos métodos, eclipse nos ayuda a generarlos. | + | Pulsando sobre la generación de esos métodos, eclipse nos ayuda a generarlos. |
+ | |||
+ | Por ejemplo, la implementación del método '' | ||
---- | ---- | ||
Línea 43: | Línea 48: | ||
El método de la clase '' | El método de la clase '' | ||
- | Cuando nosotros creamos una clase, puede que la información genérica del método original no nos sirva de mucho. **Por lo que se recomienda que todas las subclases de Object lo sobrescriban**. | + | Cuando nosotros creamos una clase, puede que necesitemos tener un modo textual |
- | Es el __creador de la clase quien debe elegir qué información considera oportuna__ para representar al objeto. | + | Es el __programador que crea la clase quien debe elegir qué información considera oportuna__ para representar al objeto. |
<code java> | <code java> | ||
Línea 66: | Línea 71: | ||
</ | </ | ||
- | Una de las mayores ventajas de crear el método | + | La principal ventaja |
<code java> | <code java> | ||
Línea 77: | Línea 82: | ||
El método equals se usa para saber si un objeto es igual a otro, devolviendo '' | El método equals se usa para saber si un objeto es igual a otro, devolviendo '' | ||
- | Cuando dos objetos pertenecen a distinta clase, es fácil evaluarlo. Pero cuando dos objetos pertenecen a la misma clase, aunque sean objetos distintos, nos podría interesar establecer un criterio para indicar cuando son iguales. | + | Cuando dos objetos pertenecen a distinta clase, es fácil evaluarlo |
Por ejemplo: | Por ejemplo: | ||
Línea 122: | Línea 127: | ||
| | ||
| | ||
- | if (this == obj){ | + | if (this == obj){ //Si referencian al mismo objeto |
| | ||
} | } | ||
- | if (obj == null){ | + | if (obj == null){ |
return false; | return false; | ||
} | } | ||
- | if (this.getClass() != obj.getClass()){ | + | if (this.getClass() != obj.getClass()){ |
return false; | return false; | ||
} | } | ||
- | | + | |
- | if ( ! ((this.dni.equals(obj.dni) | + | if ( ! ((this.dni.equals(other.dni) |
- | && | + | && |
- | && | + | && |
| | ||
} | } | ||
- | return true; | + | return true; //Si no he devuelto false, es que son iguales |
} | } | ||
} | } | ||
</ | </ | ||
- | Si puede que nuestros objetos se almacenen el algún tipo de estructura //Hash// debemos | + | Si puede que nuestros objetos se almacenen el algún tipo de estructura //Hash// debemos sobrescribir el método '' |
---- | ---- | ||
(c) {{date> %Y}} Fernando Valdeón | (c) {{date> %Y}} Fernando Valdeón |
bloque3/overrideobject.1520251523.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)