> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/ud4-elementos-da-programacion-orientada-a-obxectos/a-clase-object.md).

# A clase Object

A clase **`Object`**<i class="fa-copy">:copy:</i> do paquete `java.lang`<i class="fa-copy">:copy:</i> é unha **clase** especial da que **herdan, directa ou indirectamente, todas as clases en Java**.

Todas as clases descenden de `Object`<i class="fa-copy">:copy:</i>. Incluso as que nos definimos herda de `Object`<i class="fa-copy">:copy:</i>. **Esta herdanza realízase por defecto se non se especifica nada**:

```java
class Persoa {
    // ...
}
```

En realidade é o mesmo que:

```java
class Persoa extends Object {
    // ...
}
```

Polo tanto:

* Todas as clases implantan un conxunto de método definidos na clase `Object`<i class="fa-copy">:copy:</i>.
* Pódese referenciar de calquera tipo utilizando un obxecto `Object`<i class="fa-copy">:copy:</i>.

{% hint style="warning" %}
Documentación oficial: <https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html>
{% endhint %}

A clase Object inclúe varios métodos que son relevantes de cara ao ciclo de vida de calquera obxecto:

* **toString():** Devolve unha representación do obxecto en forma de cadea
* **equals(Object o):** Indica se un obxecto é igual a outro
* **hashCode():** Devuelve un valor hash para o obxecto
* **clone():** Crea unha copia do obxecto

Para poder traballar estes métodos en diferentes relacións, imos a plantexar o seguinte exemplo:

{% @mermaid/diagram content="classDiagram
direction LR  %% Left to Right

```
class Persona {
    -String nombre
    -double peso
    -Direcion direcion
    +Persona(String nombre, double peso, Direcion direcion)
    +getNombre() String
    +setNombre(String nombre) void
    +getPeso() double
    +setPeso(double peso) void
    +getDirecion() Direcion
    +setDirecion(Direcion direcion) void
}

class Direcion {
    -String calle
    -int numero
    -String localidad
    +Direcion(String calle, int numero, String localidad)
    +getCalle() String
    +setCalle(String calle) void
    +getNumero() int
    +setNumero(int numero) void
    +getLocalidad() String
    +setLocalidad(String localidad) void
}

class Estudiante {
    -String titulacion
    +Estudiante(String nombre, double peso, Direcion direcion, String titulacion)
    +getTitulacion() String
    +setTitulacion(String titulacion) void
}

%% Relaciones
Persona "1" --> "1" Direcion : tiene
Estudiante --|> Persona : hereda de



" %}
```

```java
package Object;

public class Direccion {
    
    private String calle;
    private int numero;
    private String localidad;

    public Direcion(String calle, int numero, String localidad) {
        this.calle = calle;
        this.numero = numero;
        this.localidad = localidad;
    }

    public String getCalle() {
        return calle;
    }

    public void setCalle(String calle) {
        this.calle = calle;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getLocalidad() {
        return localidad;
    }

    public void setLocalidad(String localidad) {
        this.localidad = localidad;
    }
    
}
```

```java
package Object;

public class Persona {
    
    private String nombre;
    private double peso;
    private Direccion direccion;

    public Persona(String nombre, double peso, Direccion direccion) {
        this.nombre = nombre;
        this.peso = peso;
        this.direcion = direcion;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public double getPeso() {
        return peso;
    }

    public void setPeso(double peso) {
        this.peso = peso;
    }

    public Direcion getDirecion() {
        return direcion;
    }

    public void setDirecion(Direcion direcion) {
        this.direcion = direcion;
    }
}

```

```java
package Object;

public class Estudiante extends Persona {
    
    private String titulacion;
    
    public Estudiante(String nombre, double peso, Direccion direccion, String titulación){
        super(nombre,peso,direccion);
        this.titulacion = titulación;
    }

    public String getTitulacion() {
        return titulacion;
    }

    public void setTitulacion(String titulacion) {
        this.titulacion = titulacion;
    }
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/ud4-elementos-da-programacion-orientada-a-obxectos/a-clase-object.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
