Quando uma classe implementa uma interface, a classe pode ser considerada uma especialização da interface. Por causa disso, nos lugares onde a interface deveria ser utilizada, a classe pode ser utilizada. Por exemplo: se um método recebe como parâmetro um objeto do tipo da interface, então poderá ser passada a subclasse como parâmetro. Observe o código e as afirmações e assinale a alternativa correta.
I - O método alimentar da classe Main não irá funcionar, pois ele recebe uma interface TemFome e é passado um objeto da classe Galinha.
II - O método mandarParaFazenda da classe Main não irá funcionar, pois ele recebe uma classe Animal e é passado um objeto da classe Galinha.
III - A classe Galinha está errada, pois ao invés de "implements TemFome" deveria estar escrito "extends TemFome".
IV - Apesar de Java não ter herança múltipla, é possível uma classe implementar várias interfaces, pois a interface nunca terá código para ser executado, tendo somente constantes e métodos abstratos.
V - Como Java não possui herança múltipla, uma classe pode estender no máximo uma classe.
Soluções para a tarefa
Somente as afirmativas IV e V são corretas.
Resposta:
Alternativa 2: IV e V, apenas.
Explicação:
(F) I - O método alimentar da classe Main não irá funcionar, pois ele recebe uma interface TemFome e é passado um objeto da classe Galinha. -> Galinha implementa "TemFome".
(F) II – O método mandarParaFazenda da classe Main não irá funcionar, pois ele recebe uma classe Animal e é passado um objeto da classe Galinha. -> Galinha herda "Animal".
(F) III – A classe Galinha está errada, pois ao invés de “implements TemFome” deveria estar escrito “extends TemFome”. -> "TemFome" é interface, portanto "implements".
(V) IV – Apesar de Java não ter herança múltipla, é possível uma classe implementar várias interfaces, pois a interface nunca terá código para ser executado, tendo somente constantes e métodos abstratos. -> "herança múltipla" é possível para implementação ("implements") de interface.
(V) V – Como Java não possui herança múltipla, uma classe pode estender no máximo uma classe. -> Para classes concretas e mesmo abstratas não há "herança múltipla" apenas para interfaces.