Vamos a continuar con este ejercicio de clase obvie bien con todo esto ya aclarado de la dirección de
memoria de nuestros objetos.
Vamos a continuar vamos a quitar todo este código
y también quitamos todo Este tag de dependencia que ha agregado
quitamos estos import hacemos un Clin Anvil
y con eso estamos listos para continuar bien hasta aquí lo que hemos hecho entonces es crear dos objetos
con los mismos valores.
Sin embargo con esto ya hemos comprobado con esta línea hemos comprobado que no están en la misma dirección
de memoria aunque regresan el mismo valor de Scott.
Esto puede variar también incluso de plataforma en plataforma pero vamos a ver a continuación cómo vamos
a implementar nosotros estos métodos.
Bien así que ahora vamos a crear un método llamado comparar objetos
iba a recibir los dos objetos que hemos creado empleado 1 y empleado 2 vamos a crear este método.
En esta misma clase va a ser privado de tipo Static no va a regresar nada
y se llama comparar objetos
recibe dos referencias.
En este caso de tipo empleado con los argumentos de M 1 y 2 ahora vamos a empezar a comparar aquí los
objetos vamos a quitar aquí este sistema Out ya que eso ya no lo vamos a utilizar en el método main
sino lo vamos a hacer dentro de este método comparar objetos
imprimimos el empleado 1.
Recordemos que esto manda llamar en automático al método autodestruyen y posteriormente imprimimos el
empleado 2.
Vamos a guardar cambios y ejecutamos
y podemos observar que se está mandando a imprimir el empleado 1 con los valores de Juan y sueldo respectivamente
y el empleado 2 con los mismos valores y debido a que son los mismos valores entonces el código Scott
en este caso en esta plataforma que estamos utilizando nos da el mismo valor pero dependiendo de la
plataforma este valor podría variar ya que al ser dos objetos distintos no necesariamente tienen que
ser iguales.
Estos valores de Jacob.
Jacob recordemos que es un valor único que se asigna a cada uno de los objetos generándose a partir
de los valores asignados a cada uno de los atributos de nuestro objeto ahora vamos a hacer la revisión
por referencia ya lo hemos hecho también anteriormente pero simplemente para comprobar que tengan ya
este código vamos a preguntar si el empleado 1 es igual al empleado 2 pero con eso estamos revisando
las referencias en memoria y en dado caso de que sean iguales los objetos
mandamos a imprimir los objetos tienen la misma dirección en memoria de lo contrario
mandamos a imprimir los objetos tienen distinta
dirección en memoria guardamos cambios y ejecutamos
y Podemos se va que en este caso el resultado es.
Los objetos tienen distinta dirección en memoria como ya lo analizamos en el video anterior esto es
debido a que estamos utilizando la palabra reservada New y cada que utilicemos la palabra reserva Danio.
Entonces con esto nos aseguramos que vamos a crear un objeto en distinta ubicación de memoria bien como
siguiente paso vamos a revisar el método y quals para preguntar si el contenido de los objetos es igual.
Revisión.
Del método y cosas así que a diferencia de la revisión de referencia en memoria para saber si apuntan
a la misma referencia con el método y quals podemos saber si los dos objetos tienen el mismo contenido
ya que muchas veces cuando preguntamos si son iguales no nos referimos a la referencia en memoria sino
al contenido de nuestros objetos por contenido me refiero a los valores de cada uno de los atributos
de nuestros objetos.
Así que en este caso los dos objetos contienen los mismos valores en nombre y sueldo.
Así que con esto preguntamos si los dos objetos son iguales.
Pero en contenido y en dado caso de que sean iguales mandamos a imprimir
los objetos tienen el mismo contenido de lo contrario mandamos imprimir
los objetos no tienen el mismo contenido guardamos cambios y ejecutamos
y Podemos se va la respuesta en este caso los objetos tienen el mismo contenido debido a que podemos
observar que los valores que hemos asignado son exactamente los mismos pero cualquier modificación que
hagamos en el contenido.
Por ejemplo si ponemos la cadena de Juan pero con j minúscula guardamos cambios y ejecutamos podemos
observar que el mensaje que nos muestra los objetos no tienen el mismo contenido así que cualquier variante
en los valores de los atributos entonces los objetos no son iguales en contenido.
Y por último vamos a comprobar los valores de Skout.
Recordemos que lapida IAVA nos indica que si implementamos el método ICAS entonces también debemos de
implementar el método Scout.
El compilador no nos va a marcar error incluso si quitamos dentro de la clase empleado si quitamos esta
implementación podemos ver que no nos marca ningún error debido a que el método Scout tiene una implementación
básica en la clase Object y este método se hereda a esta clase empleado.
Por lo tanto no nos marca ningún error.
Sin embargo la recomendación del JDK es que lo debemos implementar bien así que con esto ya tenemos
completa nuestra clase de empleado y vamos a comprobar ahora el método Jacob
vamos a preguntar
si el valor de Skout del empleado 1 es igual al valor del empleado 2 a su Skout.
Recordemos que es un valor entero que representa al objeto.
En este momento según los valores que contiene cada uno de los atributos
y si son iguales entonces
mandamos a imprimir los objetos tienen el mismo código hojas de lo contrario mandamos a imprimir los
objetos no tienen el mismo código hojas guardamos cambios y ejecutamos
y podemos llevar el mensaje.
Anteriormente vimos que los objetos tienen el mismo contenido y según la especificación de JDK si los
objetos tienen el mismo contenido entonces deben tener el mismo código hojas.
Así que por ello podemos observar que los objetos tienen el mismo código ya que este código se genera
a partir de los valores de los atributos de nuestros objetos y si contienen los mismos valores entonces
debe ser el mismo número para cada uno de los objetos.
El mismo Código hojas y podemos imprimir el valor del código hojas para cada uno de los objetos en dado
caso de que sean los mismos valores
mandamos a imprimir el código hojas del empleado 1
y también mandamos a imprimir el código hojas del empleado 2
guardamos cambios ejecutamos y podemos observar que el número generado a partir de los valores de los
atributos de nuestros objetos es exactamente el mismo para ambos objetos pero cualquier diferencia en
los valores de los atributos del objeto por ejemplo.
De igual manera si ponemos el nombre de Juan con j en el segundo objeto entonces vamos a ejecutar
y podemos ver que los objetos no tienen el mismo contenido según ya habíamos revisado pero también los
objetos no tienen el mismo código hojas ya que este código se genera con los valores de los atributos
según podemos observar en este Código.
Estamos utilizando los atributos de nombre y sueldo para aplicar esta fórmula y generar el código hojas
de nuestro objeto como hemos comentado esta fórmula y este código hojas puede variar de implementación
en implementación pero el objetivo es tratar de generar un número único para cada objeto.
Por lo tanto se realizan estas operaciones pero bien podría ser distinta.
Esta operación no tiene que ser exactamente la misma y en este caso nosotros la generamos a partir de
líder cada uno de los sides puede generar de manera distinta esta fórmula para Decode hojas bien y con
eso hemos analizado entonces los métodos string y quals y Escofet provenientes de la clase obvie en
esta clase Object.
Aquí se encuentran estos métodos y aunque contiene más métodos esta clase obvia que es la clase de padre
de todas las clases en Java.
Con estos métodos es suficiente para empezar a conocer y empezar a aplicar estos conceptos en nuestras
clases conforme vayamos avanzando nos vamos familiarizando con más conceptos de la clase obvien pero
de momento es suficiente para empezar a entender cómo funcionan nuestras clases en Java.
Eso es todo por esta elección y nos vemos en el siguiente vídeo.
Saludos.