As interfaces definem somente métodos abstratos que deverão ser implementados pelas classes. Cada interface pode representar funcionalidades distintas, porém podem existir classes que consigam realizar várias funcionalidades. Estas classes podem implementar várias interfaces e serem utilizadas em diversos locais. Observe o código abaixo:
Considerando o texto e o código acima, podemos afirmar que alternativa correta é:
Alternativas
Alternativa 1:
Se as anotações @Overrides fossem retiradas não teria erros, porém os métodos não seriam mais sobrescritos.
Alternativa 2:
A classe CaniveteSuico possui um erro. Não é possível implementar várias interfaces, pois Java não possui herança múltipla.
Alternativa 3:
A classe CaniveteSuico não é obrigada a implementar os 3 métodos. Ela poderia implementar somente 2 métodos e deixar o terceiro para alguma subclasse dela implementar.
Alternativa 4:
Apesar da classe CaniveteSuico implementar 3 interfaces, ela deverá escolher qual será a interface principal. Esta classe poderá ser utilizada somente nos locais de sua interface principal.
Alternativa 5:
O uso das interfaces aumenta a flexibilidade do código. Exemplo: se um método recebe uma Tesoura como parâmetro, eu posso passar um objeto de CaniveteSuico ou qualquer outra classe que implemente a interface Tesoura.
Soluções para a tarefa
Resposta: Eu Respondi esta: Funcionou comigo
A classe CaniveteSuico não é obrigada a implementar os 3 métodos. Ela poderia implementar somente 2 métodos e deixar o terceiro para alguma subclasse dela implementar.
Explicação:
Criei uma classe Dalmata e Fiz um teste. consegui extender a classe Cachorro que implementa uma interface Animal. Na classe cachoro, como implementei a interface, fui obrigado a implementar o método EmiteSom da interface Animal. Criei uma interface Animal2 e um método abstrato EmiteSom2 da interface animal2.
Na classe principal chamei o método implementado na classe cahorro
e chamei o método implementado na classe Dalmata da interface Animal 2.
//classe principal
public class Classe Principal {
public static void main(String[] args) {
Cachorro c=new Cachorro();
c.EmiteSom();
Dalmata d=new Dalmata();
d.EmiteSom();
Dalmata d2=new Dalmata();
d2.EmiteSom2();
Gato g =new Gato();
g.EmiteSom();
}
}
//classe animal
public interface Animal {
public void EmiteSom();
}
// classe cachorro
public class Cachorro implements Animal{
@Override
public void EmiteSom() {
{
System.out.println("Texto da classe Cachorro : AU AU!");
}
}
}
//classe Dalmata
public class Dalmata extends Cachorro implements Animal2{
@Override
public void EmiteSom2() {
System.out.println("AU AU Dalmata.");
}
}
Conclusão: A classe Dalmata e uma subclasse de cachorro.
A classe dalmata implenta a segunda interface, Animal 2, ou seja a classe Dlmata e uma subclasse de cachorro que implementa uma interface diferente da interface que o cachorro implementa. Cachorro implementa Animal e dalmata implementa Animal 2, porem Dalmata extende Cachorro e implementa Animal2.
Resposta:
"Alternativa 5"
Explicação:
Alternativa 1:
(F) Se as anotações @Overrides fossem retiradas não teria erros, porém os métodos não seriam mais sobrescritos. -> Continuariam a serem sobrescritos, mas isso tornaria as coisas mesnos claras.
Alternativa 2:
(F) A classe CaniveteSuico possui um erro. Não é possível implementar várias interfaces, pois Java não possui herança múltipla. -> "herança múltipla" é permitido para interfaces.
Alternativa 3:
(F) A classe CaniveteSuico não é obrigada a implementar os 3 métodos. Ela poderia implementar somente 2 métodos e deixar o terceiro para alguma subclasse dela implementar. -> Para que fim?
Alternativa 4:
(F) Apesar da classe CaniveteSuico implementar 3 interfaces, ela deverá escolher qual será a interface principal. Esta classe poderá ser utilizada somente nos locais de sua interface principal. -> Isso não existe.
Alternativa 5:
(V) O uso das interfaces aumenta a flexibilidade do código. Exemplo: se um método recebe uma Tesoura como parâmetro, eu posso passar um objeto de CaniveteSuico ou qualquer outra classe que implemente a interface Tesoura. -> Sim, pois se implementa "Tesoura", então também é uma "Tesoura".