Iniciar sesión

Object, equals(), hashCode() y toString() en Java

Los métodos que toda clase hereda

Unidad: Programación Orientada a Objetos Lección 6 de 6 Gratis
🧱
La clase Object
Toda clase en Java hereda, aunque no lo escribas, de Object. Por eso todo objeto tiene automáticamente los métodos equals(), hashCode() y toString().
public class Punto { int x, y; @Override public String toString() { return "Punto(" + x + "," + y + ")"; } @Override public boolean equals(Object o) { if (!(o instanceof Punto)) return false; Punto p = (Punto) o; return this.x == p.x && this.y == p.y; } }
Regla de oro: si sobrescribes equals(), también tienes que sobrescribir hashCode() de forma consistente, o las colecciones basadas en hash (como HashMap) se van a comportar mal.

Pon a prueba lo que aprendiste

Concepto

¿De qué clase heredan, implícitamente, todas las clases en Java?

  1. AMain
  2. BClass
  3. CObject
  4. DRoot
Ver respuesta
C) Object Object es la superclase raíz de todas las clases en Java.
toString()

¿Para qué sirve sobrescribir toString()?

  1. APara crear una copia del objeto
  2. BPara eliminar el objeto de memoria
  3. CPara comparar dos objetos
  4. DPara controlar qué texto se muestra al imprimir un objeto (por ejemplo con println)
Ver respuesta
D) Para controlar qué texto se muestra al imprimir un objeto (por ejemplo con println) Println() y la concatenación con + llaman automáticamente a toString().
equals()

Sin sobrescribir equals(), ¿qué compara por defecto la versión heredada de Object?

  1. AEl contenido de todos los atributos automáticamente
  2. BSiempre devuelve true
  3. CSolo el primer atributo
  4. DSi son exactamente el mismo objeto en memoria (igual que ==)
Ver respuesta
D) Si son exactamente el mismo objeto en memoria (igual que ==) El equals() por defecto de Object compara referencias, igual que ==.

🎯 Practica esta lección completa

Ejercicios de completar código, ordenar bloques y respuesta libre. Ganas XP y mantienes tu racha.

Practicar gratis, sin registrarte Entras como invitado directo a esta lección. Sin tarjeta.