O que eu quero dizer é:
interface B {...}
interface A extends B {...} // allowed
interface A implements B {...} // not allowed
Eu pesquisei e encontrei o seguinte :
implements
denota a definição de uma implementação para os métodos de uma interface. No entanto, as interfaces não têm implementação, portanto isso não é possível.
No entanto, interface é uma classe 100% abstrata, e uma classe abstrata pode implementar interfaces (classe 100% abstrata) sem implementar seus métodos. Qual é o problema quando se define como "interface"?
Em detalhes,
interface A {
void methodA();
}
abstract class B implements A {} // we may not implement methodA() but allowed
class C extends B {
void methodA(){}
}
interface B implements A {} // not allowed.
//however, interface B = %100 abstract class B
fonte
implements
significa que um comportamento será definido paraabstract
métodos (exceto para classes abstratas, obviamente), você define a implementação.extends
significa que um comportamento é herdado.Com as interfaces pode-se dizer que uma interface deve ter o mesmo comportamento de outra, não havendo nem mesmo uma implementação real. É por isso que faz mais sentido uma interface para
extends
outra interface em vez de implementá-la.Em uma nota lateral, lembre-se que mesmo que uma
abstract
classe possa definirabstract
métodos (da maneira sensata que uma interface faz), ela ainda é uma classe e ainda precisa ser herdada (estendida) e não implementada.fonte
Conceitualmente, existem as duas classes e interfaces de "domínios". Dentro desses domínios que você está sempre estendendo, apenas uma classe implementa uma interface, que é uma espécie de "cruzar a fronteira". Então, basicamente, "estende" para interfaces espelha o comportamento para classes. Pelo menos eu acho que essa é a lógica por trás. Parece que nem todo mundo concorda com esse tipo de lógica (acho que é um pouco artificial) e, na verdade, não há razão técnica para ter duas palavras-chave diferentes.
fonte
Isso é simplesmente uma questão de convenção. Os escritores da linguagem java decidiram que "extends" é a melhor maneira de descrever esse relacionamento, então é isso que todos nós usamos.
Em geral, mesmo que uma interface seja "uma classe 100% abstrata", não pensamos sobre ela dessa forma. Normalmente pensamos nas interfaces como uma promessa de implementar certos métodos-chave, em vez de uma classe da qual derivar. E assim, tendemos a usar uma linguagem diferente para interfaces e não para classes.
Como outros afirmam, há boas razões para escolher "estende" em vez de "implementos".
fonte
Espero que isso ajude um pouco o que aprendi em oops (core java) durante a minha faculdade.
Implementos denota a definição de uma implementação para os métodos de uma interface. No entanto, as interfaces não têm implementação, portanto isso não é possível. Uma interface pode, entretanto, estender outra interface, o que significa que ela pode adicionar mais métodos e herdar seu tipo.
Aqui está um exemplo abaixo, esse é o meu entendimento e o que aprendi na opa.
e manter uma coisa em mente uma interface só pode estender outra interface e se você quiser definir sua função em alguma classe, então apenas uma interface é implementada, por exemplo, abaixo
Agora, se uma classe implementasse essa interface, seria assim:
e se uma classe abstrata tem alguma função abstrata, defina e declare e você deseja definir essas funções ou pode dizer implementar essas funções, então você supõe que estende essa classe porque a classe abstrata só pode ser estendida. aqui está o exemplo abaixo.
Aqui está um exemplo de subclasse de MyAbstractClass:
fonte
A interface é como uma abstração que não fornece nenhuma funcionalidade. Conseqüentemente, ele não 'implementa', mas estende as outras abstrações ou interfaces.
fonte
Interface é a classe que contém um método abstrato que não pode criar nenhum objeto. Como a Interface não pode criar o objeto e não é uma classe pura, não vale a pena implementá-la.
fonte