Julgue o item a seguir, relacionados a desenvolvimento web e...
Julgue o item a seguir, relacionados a desenvolvimento web em Java.
A partir do Java 8 é possível ter métodos concretos em
interfaces, o que permite evoluir uma interface sem que haja
comprometimento à compatibilidade.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - certo
A questão aborda um conceito introduzido no Java 8, que é a capacidade de interfaces incluírem métodos concretos, conhecidos como métodos default. Este recurso permite que os desenvolvedores evoluam interfaces adicionando novos métodos sem quebrar a compatibilidade com as classes que já as implementam.
Antes do Java 8, todas as interfaces só podiam conter métodos abstratos, ou seja, métodos sem corpo, que precisavam ser implementados obrigatoriamente pelas classes que assinavam essas interfaces. Com a introdução dos métodos default, é possível agora incluir implementações reais que não precisam ser sobrescritas nas classes que implementam a interface, facilitando a evolução de APIs sem que haja a necessidade de modificar todas as classes que usam a interface.
Por exemplo, se tivermos uma interface chamada MeuInterface
, poderíamos adicionar um novo método default da seguinte forma:
public interface MeuInterface {
void metodoAntigo();
default void novoMetodo() {
// implementação que será herdada por padrão
}
}
Com essa adição, as classes que implementam MeuInterface
não são obrigadas a implementar novoMetodo()
(a menos que queiram mudar o comportamento padrão), o que mantém o código dessas classes funcional após a adição do novo método na interface.
Esta característica é particularmente útil quando se deseja adicionar novas funcionalidades a bibliotecas ou frameworks sem forçar todos os usuários existentes a atualizar suas implementações.
É por isso que a afirmativa é correta, pois reflete com precisão uma das melhorias trazidas pelo Java 8 para o desenvolvimento de interfaces e a manutenção de código em Java.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Podemos ter métodos concretos em interfaces a partir do Java 8! Basta utilizar o modificador default . Eles serão 'herdados' por todos que implementarem essa interface. Esse recurso, chamado default method, permite evoluir uma interface sem quebrar compatibilidade.
Fonte:https://www.alura.com.br/artigos/o-minimo-que-voce-deve-saber-de-java-8#:~:text=Podemos%20ter%20m%C3%A9todos%20concretos%20em,uma%20interface%20sem%20quebrar%20compatibilidade.
Antes do Java 8, todas os métodos em uma interface eram considerados abstratos, o que significa que apenas as declarações de método eram permitidas, mas não a implementação. Isso exigia que as classes que implementavam as interfaces fornecessem uma implementação para todos os métodos declarados na interface.
No entanto, com a introdução das "interfaces funcionais" no Java 8, uma nova funcionalidade chamada "métodos padrão" (default methods) foi adicionada às interfaces. Um método padrão é um método com uma implementação padrão definida diretamente na interface. Isso permitiu que as interfaces fossem estendidas ou modificadas sem quebrar a compatibilidade com implementações anteriores.
By Chatgpt
O item está correto. A partir do Java 8, foi introduzida uma nova funcionalidade chamada "default methods" (métodos padrão) em interfaces. Isso permite que você defina métodos concretos em interfaces, em vez de apenas declarar métodos abstratos. Esses métodos concretos têm uma implementação padrão e podem ser herdados pelas classes que implementam a interface.
Essa funcionalidade foi introduzida para permitir a evolução de interfaces sem quebrar a compatibilidade com as classes existentes que implementam essas interfaces. Ou seja, se você precisar adicionar um novo método a uma interface, você pode fornecer uma implementação padrão para esse método. As classes que já implementam a interface não precisarão necessariamente implementar o novo método, pois ele já possui uma implementação padrão na interface.
Isso é particularmente útil quando se trata de bibliotecas e APIs, pois evita a necessidade de alterar todas as classes que implementam uma interface sempre que a interface é estendida. Dessa forma, o Java 8 introduziu uma maneira mais flexível de adicionar funcionalidades às interfaces sem quebrar a compatibilidade.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo