Explique em um idioma fácil de entender ou em um link para algum artigo.
java
inheritance
interface
extends
implements
Saad Masood
fonte
fonte
Respostas:
extends
é para estender uma classe.implements
é para implementar uma interfaceA diferença entre uma interface e uma classe regular é que, em uma interface, você não pode implementar nenhum dos métodos declarados. Somente a classe que "implementa" a interface pode implementar os métodos. O equivalente em C ++ de uma interface seria uma classe abstrata (não EXATAMENTE a mesma, mas praticamente).
Além disso, o java não suporta herança múltipla para classes. Isso é resolvido usando várias interfaces.
agora estendendo uma classe
nesse caso
Sugiro que você faça mais pesquisas sobre ligação dinâmica, polimorfismo e, em geral, herança em programação orientada a objetos
fonte
default
comportamento para métodos em interfaces, tornando opcional a implementação customizada desses métodos. Portanto, a declaração "você pode especificar apenas métodos, mas não implementá-los" está totalmente correta apenas para Java 7 e abaixo .public interface ListIterator<E> extends Iterator<E>
Percebo que você tem algumas perguntas sobre C ++ no seu perfil. Se você entender o conceito de herança múltipla do C ++ (referindo-se às classes que herdam características de mais de uma outra classe), o Java não permite isso, mas possui uma palavra-chave
interface
, que é como uma classe virtual pura em C ++. Como mencionado por muitas pessoas, você éextend
uma classe (e você só pode estender de uma) eimplement
uma interface - mas sua classe pode implementar quantas interfaces você desejar.Ou seja, essas palavras-chave e as regras que regem seu uso delineiam as possibilidades de herança múltipla em Java (você pode ter apenas uma superclasse, mas implementar várias interfaces).
fonte
Geralmente implementa usado para implementar uma interface e estende usado para extensão do comportamento da classe base ou classe abstrata .
estende : Uma classe derivada pode estender uma classe base. Você pode redefinir o comportamento de uma relação estabelecida. Classe derivada " é um " tipo de classe base
implementa : Você está implementando um contrato. A classe que implementa a interface " possui um " recurso.
Com o java 8 release, a interface pode ter métodos padrão na interface, o que fornece implementação na própria interface.
Consulte esta pergunta para saber quando usar cada um deles:
Interface versus classe abstrata (OO geral)
Exemplo para entender as coisas.
resultado:
Pontos importantes para entender:
remember
() eprotectOwner
() compartilhandoname,lifeExpentency
deAnimal
Cat
eDog
implementando esse recurso.Think,Learn,Apply,Climb
Analisando esses exemplos, você pode entender que
As classes não relacionadas podem ter recursos por meio da interface, mas as classes relacionadas substituem o comportamento por meio da extensão das classes base.
fonte
extends
é para quando você está herdando de uma classe base (ou seja, estendendo sua funcionalidade).implements
é para quando você estiver implementando uma interface .Aqui é um bom lugar para começar: Interfaces e herança .
fonte
A
class
pode apenas "implementar" uminterface
. Uma classe apenas "estende" aclass
. Da mesma forma, uminterface
pode estender outrointerface
.A
class
pode apenas se estenderclass
. Aclass
pode implementar váriosinterface
s.Se, em vez disso, você estiver mais interessado em saber quando usar
abstract class
es einterface
s, consulte este tópico: Interface vs Classe Abstrata (OO geral)fonte
class
só pode implementar uminterface
. Aclass
pode estender várias outras classes. Eu acredito que você conseguiu isso de trás para frente.Uma interface é uma descrição das ações que um objeto pode executar ... por exemplo, quando você liga um interruptor de luz, a luz acende, você não se importa como, apenas isso. Na Programação Orientada a Objetos, uma Interface é uma descrição de todas as funções que um objeto deve ter para ser um "X". Novamente, como exemplo, qualquer coisa que "AJA COMO" uma luz deve ter um método turn_on () e um método turn_off (). O objetivo das interfaces é permitir que o computador aplique essas propriedades e saber que um objeto do TYPE T (qualquer que seja a interface) deve ter funções chamadas X, Y, Z, etc.
Uma interface é uma estrutura / sintaxe de programação que permite ao computador impor determinadas propriedades em um objeto (classe). Por exemplo, digamos que temos uma classe de carros, uma de scooter e uma de caminhões. Cada uma dessas três classes deve ter uma ação start_engine (). Como o "motor é iniciado" para cada veículo é deixado para cada classe específica, mas o fato de que eles devem ter uma ação start_engine é o domínio da interface .
fonte
Como mostra a figura abaixo, uma classe estende outra classe, uma interface estende outra interface, mas uma classe implementa uma interface.
Para mais detalhes
fonte
Estende : É usado para obter atributos de uma classe pai na classe base e pode conter métodos já definidos que podem ser substituídos na classe filho.
Implementações : É usada para implementar uma interface (classe pai apenas com assinaturas de funções, mas não com suas definições), definindo-a na classe filho.
Há uma condição especial: "E se eu quiser que uma nova interface seja filha de uma interface existente?". Na condição acima, a interface filho estende a interface pai.
fonte
A estende B:
A e B são duas classes ou duas interfaces
A implementa B
A é uma classe e B é uma interface
O caso restante em que A é uma interface e B é uma classe não é legal em Java.
fonte
Implementações é usado para interfaces e estende é usado para estender uma classe.
Para torná-lo mais claro em termos mais fáceis, uma interface é o som - uma interface - um modelo, que você precisa aplicar, seguir, juntamente com suas idéias.
Extend é usado para classes, aqui, você está estendendo algo que já existe, adicionando mais funcionalidade a ele.
Mais algumas notas:
uma interface pode estender outra interface.
E quando você precisar escolher entre implementar uma interface ou estender uma classe para um cenário específico, vá para implementar uma interface. Porque uma classe pode implementar várias interfaces, mas estender apenas uma classe.
fonte
Quando uma subclasse estende uma classe, ela permite que a subclasse herde (reutilize) e substitua o código definido no supertipo. Quando uma classe implementa uma interface, ela permite que um objeto criado a partir da classe seja usado em qualquer contexto que espere um valor da interface.
O verdadeiro problema aqui é que, enquanto implementamos qualquer coisa, simplesmente significa que estamos usando esses métodos como estão. Não há espaço para alteração em seus valores e tipos de retorno.
Mas quando estamos estendendo algo, isso se torna uma extensão da sua classe. Você pode alterá-lo, usá-lo, reutilizá-lo e não precisa necessariamente retornar os mesmos valores que na superclasse.
fonte
Usamos SubClass estende SuperClass somente quando a subclasse quer usar algumas funcionalidades (métodos ou variáveis de instância) que já está declarado no SuperClass , ou se eu quiser modificar um pouco a funcionalidade do SuperClass (método de substituição). Mas digamos, por exemplo, eu tenho uma classe Animal ( SuperClass ) e uma classe Dog ( SubClass ) e existem poucos métodos que eu defini na classe Animal, por exemplo. doEat (); , doSleep (); ... e muitos mais.
Agora, minha classe Dog pode simplesmente estender a classe Animal, se eu quiser que meu cão use qualquer um dos métodos declarados na classe Animal, eu posso invocar esses métodos simplesmente criando um objeto Dog. Dessa forma, posso garantir que tenho um cachorro que possa comer, dormir e fazer o que mais quiser.
Agora, imagine, um dia, algum amante de gatos entra em nosso espaço de trabalho e tenta estender a classe Animal (os gatos também comem e dormem). Ela cria um objeto Cat e começa a invocar os métodos.
Mas, digamos, alguém tenta fazer um objeto da classe Animal. Você pode dizer como um gato dorme, como um cachorro come, como um elefante bebe. Mas não faz sentido fazer um objeto da classe Animal. Porque é um modelo e não queremos nenhuma maneira geral de comer.
Então, em vez disso, prefiro criar uma classe abstrata que ninguém possa instanciar, mas que possa ser usada como modelo para outras classes.
Portanto, para concluir, a Interface nada mais é do que uma classe abstrata (uma classe abstrata pura) que não contém implementações de métodos, mas apenas as definições (os modelos). Portanto, quem implementa a interface sabe que possui os modelos de doEat (); e doSleep (); mas eles precisam definir seu próprio doEat (); e doSleep (); métodos de acordo com sua necessidade.
Você estende apenas quando deseja reutilizar parte da SuperClasse (mas lembre-se de que sempre pode substituir os métodos da sua SuperClasse de acordo com sua necessidade) e implementa quando deseja os modelos e deseja defini-los por conta própria (de acordo com sua necessidade).
Vou compartilhar com você um pedaço de código: você tenta com diferentes conjuntos de entradas e olha os resultados.
Interfaces definidas :
fonte
Ambas as palavras-chave são usadas ao criar sua própria nova classe na linguagem Java.
Diferença:
implements
significa que você está usando os elementos de uma interface Java em sua classe.extends
significa que você está criando uma subclasse da classe base que está estendendo. Você só pode estender uma classe na sua classe filha, mas pode implementar quantas interfaces desejar.Consulte a página de documentação da Oracle na interface para obter mais detalhes.
Isso pode ajudar a esclarecer o que é uma interface e as convenções sobre como usá-las.
fonte
Nos termos mais simples, o extends é usado para herdar de uma classe e os implementos são usados para aplicar uma interface na sua classe
estende :
implementa :
se você ainda tiver confusão, leia isto: https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html https://docs.oracle.com/javase/tutorial/java/IandI/usinginterface.html
fonte
Classes e interfaces são ambos contratos . Eles fornecem métodos e propriedades nas quais outras partes de um aplicativo confiam.
Você define uma interface quando não está interessado nos detalhes de implementação deste contrato. A única coisa que importa é que o contrato (a interface) exista.
Nesse caso, você deixa para a classe que implementa a interface se preocupar com os detalhes de como o contrato é cumprido. Somente classes podem implementar interfaces.
extends é usado quando você deseja substituir os detalhes de um contrato existente. Dessa forma, você substitui uma maneira de cumprir um contrato por uma maneira diferente. Classes podem estender outras classes e interfaces podem estender outras interfaces.
fonte
Extends
é usado quando você deseja atributos da classe / interface pai na sua classe / interface filho eimplements
é usado quando você deseja atributos de uma interface na sua classe.Exemplo:
Estende usando classe
classe Pai {
}
classe Child estende Parent {
}
Estende usando interface
interface Pai {
}
interface Filho estende Pai {
}
Implementos
interface A {
}
classe B implementa A {
}
Combinação de extensões e implementos
fonte
estende
implementa
classes abstratas também agem como classe, com extensões e implementações
fonte
Essas duas palavras-chave estão diretamente anexadas à Herança, é um conceito central do OOP. Quando herdamos uma classe para outra, podemos usar extends, mas quando vamos herdar algumas interfaces para nossa classe, não podemos usar extends, devemos usar implementos e podemos usar extends keyword para herdar interface de outra interface.
fonte