> 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/exercicios-java/ud7-exercicios/clases-xenericas.md).

# Clases Xenéricas

1. Crea unha clase Producto con dous atributos denominados código e descripción que podian ser de calquera tipo, e sexan accesibles dentro da propia clase ou dunha clase da propia xerarquía. Inclúe o seguinte:
   1. Dous constructores, un que reciba o codigo e a descripción e outro que reciba unicamente o código. Neste segundo, o valor da descripción será "Descripción por defecto". Evita a reescritura de código sempre que sexa posible
   2. Métodos getters y setters para os atributos código e descripción
   3. Implementa un método toString() para a clase Producto
   4. Implementa un método equals() para a clase Producto. Dous productos son iguais se o código e a descripción son o mesmo. **Emprega wildcards na comprobación de tipos do método mediante instanceof**
   5. Crea unha clase App con un método main no que tes que instanciar o seguinte:
      1. Un obxecto producto con un código numérico e unha descripción tipo cadena
      2. Dous obxectos producto con un código tipo cadena e unha descripción tipo cadena
      3. Chama ao método toString() dos tres productos para que mosten a información por pantalla
      4. Emprega o método equals para comparar os tres productos entre si
2. Dado o seguinte código, explica as diferencias entre os tipos T e Q.
   1. ¿En que ámbitos (clase e métodos) son accesibles T e Q?
   2. ¿Por que se declara T dunha de una forma e Q de outra?

<pre class="language-java"><code class="lang-java">public class Contenedor&#x3C;T> {  
<strong>    private T atributo;       
</strong>    
    public void metodo1(T param) {...}  
    
    public &#x3C;Q> void metodo2(Q param) { 
     ...
    }
}
</code></pre>

3. ¿Que habería que adaptar na clase Producto para que o tipo do atributo código fose sempre de tipo enteiro ou clase herdada de enteiro? Modifica o código do main para que realice probas da nova clase Producto.


---

# 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/exercicios-java/ud7-exercicios/clases-xenericas.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.
