Este artigo analisa a diferença entre interfaces e classes abstratas no aprendizado de Java, o que é crucial para iniciantes aprenderem em profundidade e compreenderem com precisão os conceitos de programação Java. Os detalhes são os seguintes:
Iniciantes em Java costumam fazer perguntas como: Qual é a diferença entre interfaces e classes abstratas? Com base em que você escolhe usar interfaces e classes abstratas?
Os conceitos de interfaces e classes abstratas são diferentes. A interface é a abstração das ações e a classe abstrata é a abstração da fonte.
A classe abstrata representa o que é esse objeto. A interface representa o que este objeto pode fazer. Por exemplo, homens e mulheres, estas duas classes (se forem classes...), a sua classe abstrata é a das pessoas. Explique que eles são todos seres humanos.
As pessoas podem comer e os cães também podem comer. Você pode definir "comer" como uma interface e deixar que essas classes a implementem.
Portanto, em linguagens de alto nível, uma classe só pode herdar uma classe (classe abstrata) (assim como uma pessoa não pode ser uma coisa viva e uma coisa não viva ao mesmo tempo), mas pode implementar múltiplas interfaces (comer interface , interface ambulante).
O primeiro ponto. Uma interface é uma variante de uma classe abstrata e todos os métodos da interface são abstratos. Uma classe abstrata é uma classe que declara a existência de um método sem implementá-lo.
O segundo ponto. Interfaces podem ser herdadas, mas classes abstratas não (Nota: O autor original cometeu um erro aqui. Classes abstratas podem ser herdadas. Se todas as subclasses implementam os métodos na classe abstrata, a subclasse não é uma classe abstrata; caso contrário, uma delas não foi implementado. Então a subclasse também é uma classe abstrata)
O terceiro ponto. Os métodos de definição de interface não podem ser implementados, enquanto classes abstratas podem implementar alguns métodos.
O quarto ponto. O tipo de dados básico na interface é estático, mas a imagem abstrata não.
Quando você se concentra na essência de algo, use classes abstratas; quando você se concentra em uma operação, use interfaces.
A funcionalidade das classes abstratas excede em muito a das interfaces, mas o custo de definição de classes abstratas é alto . Porque em linguagens de alto nível (e em termos de design real), cada classe só pode herdar uma classe. Nesta classe, você deve herdar ou escrever todos os recursos comuns de todas as suas subclasses. Embora a interface tenha uma função muito mais fraca, ela é apenas uma descrição de uma ação. E você pode implementar várias interfaces em uma classe ao mesmo tempo. A dificuldade será reduzida durante a fase de design.