> 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/ud4-exercicios/polimorfismo-sobrecarga.md).

# Polimorfismo - Sobrecarga

1. Unha aplicación de **xestión dun sistema de impresión**, existe unha clase chamada **`Impresora`**, que representa unha impresora dun centro de traballo. Unha impresora se caracteriza por:

   1. Nome ou modelo
   2. Contador de páxinas impresas

   A impresora debe de contar con diferentes versións e impresión:

   1. `imprimir()`: imprime unha páxina de proba.
   2. `imprimir(int copias)`: imprime o número de páxinas indicado.
   3. `imprimir(String documento)`: imprime un documento indicado polo seu nome.
   4. `imprimir(String documento, int copias):` imprime un documento indicando o numero de copias
   5. Intenta definir un método `imprimir()`que en lugar de devolver void, devolva un String coa seguinte mensaxe. ¿Que ocorre?

   Cada un de estes métodos imprimir debe de mostrar por pantalla unha mensaxe que permita diferenciar que método está a ser empregado. Crea una clase App no que se instancien dúas impresoras diferentes, e proba o método sobrecargado de imprimir en cada unha de elas en todas as súas variantes.
2. Unha aplicación de **xestión de tarifas dun aparcadoiro**, conten unha clase chamada `CalculadoraTarifas`. A calculadora de tarifas conta con duas caracteristicas estáticas:

   1. **Tarifa de aparcamento**: un numero decimal que indica o importe por hora a cobrar
   2. **Desconto de abonado:** A porcentaxe de desconto que se lle debe aplicar aos abonados do aparcadoiro
   3. **Desconto de fin de semana:** A porcentaxe de desconto que se aplica na fin de semana.

   A calculadora de tarifias, traballa con un método estático denominado calcularTarifa para o que existen as seguintes versións:

   1. **calcularTarifa(int horas): double** Calcula o prezo total segundo o número de horas estacionado (por exemplo, 2 € por hora).
   2. **calcularTarifa(int horas, boolean finDeSemana): double**. Se é fin de semana, aplícase un desconto ao importe total.
   3. **calcularTarifa(int horas, boolean finDeSemana, boolean abonado): double**. Se o usuario é abonado, aplícase un desconto adicional.
   4. **calcularTarifa(int horas): float.** Mesmo comportamento que no método do punto a, pero devolvendo outro tipo de dato. ¿Que ocorre aqui?

   Cada un de estes métodos imprimir debe de mostrar por pantalla unha mensaxe que permita diferenciar que método está a ser empregado. Crea una clase App no que se instancien dúas impresoras diferentes, e proba o método sobrecargado de imprimir en cada unha de elas en todas as súas variantes.


---

# 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/ud4-exercicios/polimorfismo-sobrecarga.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.
