Todos los métodos de clases de objetos, y más sobre el método toString() - 1

"¡Hola, amigo!"

"¡Hola!"

"Hoy vamos a estudiar la clase Object.
Ya la conociste y sabes que Object es la clase base para todas las clases. Prácticamente no tiene datos, pero tiene varios métodos".

"¿Por qué necesita métodos? ¿Alguien realmente crea instancias de la clase Object?"

"Mírelo de esta manera: los métodos en la clase Object son comunes a todas las clases. En otras palabras, los creadores de Java identificaron varios métodos que, en su opinión, todas las clases deberían tener y los agregaron a la clase Object".

"Y cuando se combina con polimorfismo (la capacidad de anular los métodos de la clase Object en clases derivadas), se convierte en una herramienta muy poderosa".

"Veamos cuáles son estos métodos:"

Método Descripción
public String toString()
Devuelve una representación de cadena del objeto.
public native int hashCode()
public boolean equals(Object obj)
Un par de métodos utilizados para comparar objetos.
public final native Class getClass()
Devuelve un objeto especial que describe la clase actual.
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout)
public final void wait(long timeout, intnanos)
public final void wait()
Métodos para controlar el acceso a un objeto desde diferentes hilos. Para la sincronización de subprocesos.
protected void finalize()
Este método le permite liberar recursos nativos que no son de Java: cerrar archivos, transmisiones, etc.
protected native Object clone()
Este método le permite clonar un objeto: crea un duplicado del objeto.

"Estos métodos se pueden dividir en 6 grupos. Ya estás familiarizado con algunos de ellos, y nos familiarizaremos con el resto en lecciones posteriores".

"Por alguna razón, no veo nada útil aquí".

"¡Amigo! Si estos métodos no fueran importantes, ¡no los habrían agregado a cada objeto! Por lo tanto, te aconsejo que observes más de cerca qué son y por qué son necesarios. Si te parecen poco importantes , entonces no entendiste algo o no entendiste algo correctamente".

"Está bien. Escucharé atentamente".

"Comencemos con el método toString().

"Este método te permite obtener una descripción de texto de cualquier objeto. Su implementación en la clase Object es muy simple:"

return getClass().getName() + "@" + Integer.toHexString(hashCode());

"getClass() y hashCode() también son métodos de la clase Object.
Llamar a este método normalmente produce un resultado como este:"

java.lang.Object@12F456

"¿Y de qué sirve tal descripción?"

"Esta descripción le permite conocer la clase del objeto sobre el que se invocó el método. También puede distinguir entre objetos; diferentes objetos tendrán diferentes dígitos después del símbolo @".

"Pero el valor real de este método se encuentra en otra parte. Este método se puede sobrescribir en cualquier clase para devolver una descripción de objeto más detallada o adecuada".

"Pero hay más. Debido a que puede obtener una representación de texto de cada objeto, Java le permitió implementar soporte para 'agregar' cadenas a los objetos.
Compruébelo:"

Código lo que realmente sucede
int age = 18;
System.out.println("Age is " + age);

String s = String.valueOf(18);
String result = "Age is " + s;
System.out.println(result);
Student st = new Student("Vincent");
System.out.println("Student is " + st);

Student st = new Student("Vincent");
String result = "Student is " + st.toString();
System.out.println(result);
Car car = new Porsche();
System.out.println("My car is " + car);

Car car = new Porsche();
String result = "My car is " + car.toString();
System.out.println(result);

"Sí, uso esto regularmente. Especialmente cuando estoy escribiendo un programa o buscando errores. Es una operación útil".