> 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/tostring.md).

# toString()

O método `toString()`<i class="fa-copy">:copy:</i> devolve unha cadea que representa o obxecto. O seu prototipo é o seguinte:

```java
public String toString();
```

A implantación na clase `Object`<i class="fa-copy">:copy:</i> consiste en devolver o nome cualificado da clase ao que pertence o obxecto, seguido dunha arroba xunto a referencia do obxecto. Exemplo:

```java
"paquete.Direccion@2a139a55"
```

Esta implantación por defecto non é útil para a maioría de obxectos, polo tanto deberíamos realizar unha redefenición do método en cada clase que programemos. Cada clase pode utilizar unha forma diferente de representarse.

```java
class Direccion {
    //...
    
     @Override
    public String toString() {
        return "Direcion{" +
                "calle='" + calle + '\'' +
                ", numero=" + numero +
                ", localidad='" + localidad + '\'' +
                '}';
    }
}
```

## Composición

Se imos empregar o método toString en un obxecto que esta composto por outros, a idea é que que cada obxecto debe de ser capaz de convertirse en cadea a si mesmo, de tal forma que cada atributo de cada obxecto debe de ser autonomo en este sentido:

```java
public class Persona {

...
    @Override
    public String toString() {
        return
                "nombre='" + nombre + '\'' +
                ", peso=" + peso +
                ", direcion=" + direcion.toString();  //O directamente dirección
    }
}
```

## Herdanza

Na herdanza, e posible reutilizar o método toString definido na super clase para aforrar a reescritura de código. De esta forma, na nosa clase Estudiante, o método toString quedará da seguinte forma:

```java
public class Estudiante extends Persona {

...
   @Override
    public String toString() {
        return  super.toString() +
                "titulacion='" + titulacion ;
    }
 }
```

```java
public class App {

    public static void main(String[] args) {

        // Crear direcciones
        Direcion direccion1 = new Direcion("Calle Mayor", 123, "Madrid");
        Persona persona1 = new Persona("Juan", 75.5, direccion1);
        Estudiante estudiante1 = new Estudiante("Carlos", 68.0, direccion1, "Informática");
        // ====== PRUEBAS DE toString() ======
        System.out.println("=== PRUEBAS DE toString() ===");
        System.out.println("Dirección 1: " + direccion1.toString());
        System.out.println("Persona 1: " + persona1.toString());
        System.out.println("Estudiante 1: " + estudiante1.toString());
    }
 }
```

<figure><img src="/files/By9HhBRBK2q6Yxjimi0U" alt=""><figcaption></figcaption></figure>


---

# 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/tostring.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.
