Quando se está desenvolvendo um sistema, é uma boa prática de programação utilizar interfaces nos locais onde diferentes módulos serão interligados. Quando se utiliza interfaces, um módulo não precisa saber como o outro está implementado, pois ele só utiliza os métodos abstratos da interface. Outra vantagem é que é possível criar novas classes concretas que implementam a interface e, assim, o outro módulo não precisará ser alterado, pois ele trabalha com a interface e não com as classes concretas. Observe o código e assinale a alternativa correta.
1. O programa não possui erros. A classe Pessoa é flexível, já que o método vestirRoupa recebe como parâmetro a interface Roupa e é possível existir diversas implementações para esta interface.
2. O programa possui um erro. No método main, o método vestirRoupa recebe um objeto Camiseta e Calca, porém o método vestirRoupa só aceita a interface Roupa como parâmetro.
3. O programa possui um erro. As classes Camiseta e Calca implementam a mesma interface: Roupa. Uma interface deve ser implementada somente por uma classe.
4. O programa possui um erro. As classes Camiseta e Calca utilizam a anotação @Override, porém ela deve ser utilizada somente para sobrescrever métodos de classes abstratas.
5. Se o programa for executado, somente é impresso na tela: "A pessoa veste: camiseta" e "A pessoa veste: calça".
Soluções para a tarefa
Alternativa correta: O programa não possui erros. A classe Pessoa é flexível, já que o método vestirRoupa recebe como parâmetro a interface Roupa e é possível existir diversas implementações para esta interface.
Explicação das outras:
Se o programa for executado, somente é impresso na tela: "A pessoa veste: camiseta" e "A pessoa veste: calça".
Na verdade, De acordo com as linhas da classe Aplicacao, serão impressas as seguintes informações:
A pessoa está pelada A Pessoa veste: camiseta A Pessoa veste: calça
O programa possui um erro. As classes Camiseta e Calca implementam a mesma interface: Roupa. Uma interface deve ser implementada somente por uma classe.
Uma Interface pode ter várias classes implementando seus métodos. Classes abstratas é que devem ter somente uma única classe implementando seus métodos.
O programa possui um erro. As classes Camiseta e Calca utilizam a anotação @Override, porém ela deve ser utilizada somente para sobrescrever métodos de classes abstratas.
Errado. A notação @Override é usada nas classes para implementar métodos encontrados em abstratos quanto para Interfaces.
O programa possui um erro. No método main, o método vestirRoupa recebe um objeto Camiseta e Calca, porém o método vestirRoupa só aceita a interface Roupa como parâmetro.
A interface Roupa não serve como parâmetro. Ela está apenas sendo uma espécie de base na qual outras classes são construídas. A classe Roupa utilizada as classes "camiseta" e "calca" como parâmetro.