Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Implementando interface com extends ? List -> Collection

Estou com uma dúvida de conceito. java.util.Collection é uma interface. Para interfaces devemos usar implements, para simbolizar que estamos "assinando o contrato da interface". Sendo assim, por que a classe java.util.List usa extends para herda a Collection. Fiquei com uma dúvida de conceito já que o Collection é uma interface. Não deveria implementar ao invés de herdar ?

package java.util;
public interface Collection<E> extends Iterable<E> {

}
package java.util;
public interface List<E> extends Collection<E> {
...
}
2 respostas
solução!

Olá Guilherme, tudo bem com você?

Basicamente, da mesma forma que uma classe pode herdar de outra classe, uma interface também pode herdar de outra interface.

Quando declaramos que uma classe implementa (implements) uma interface, estamos dizendo que essa classe deve implementar um comportamento para todos os métodos contidos na interface. Já as interfaces não podem implementar outras interfaces, já que por padrão elas não devem possuir implementação.

Portanto, em um contexto de interfaces, usamos o extends para que uma interface herde de outra interface. Dessa forma, a interface filha recebe todos os métodos da interface mãe, e quem implementar a interface filha, terá que implementar as interfaces herdadas também!

Interfaces podem herdar de múltiplas interfaces, já que elas não são exatamente classes e não são limitadas pelas suas implementações, usando apenas as assinaturas dos métodos para garantir os contratos.

Fez sentido? Se ficou alguma dúvida ou algum ponto ainda não está claro, é só avisar!

Abraços e bons estudos!!

Entendi, todo sentido. Pra implementar ela teria que ser concreta. Muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software