Diferença entre classe abstrata e interface

programação_bookClasse abstrata vs. interface

Classe abstrata (ou tipo) é um tipo de sistema de tipos nominativos declarado pelo programa. Embora o nome implique isso, uma classe abstrata pode ou não incluir métodos ou propriedades abstratos. A classe de distinção se refere a diferentes construções de linguagem que podem ser usadas para implementar tipos abstratos.Classes abstratas podem ser caracterizadaspor um problema de design que se mantém com a melhor programação orientada a objetos e por suas naturezas inacabadas.

Uma interface é um tipo abstrato que as classes devem implementar para especificar uma interface (falando genericamente). As interfaces podem conter apenas assinaturas de métodos e declarações de constantes (estáticas e finais), nunca definições de métodos. As interfaces simulam várias heranças e são usadas para codificar semelhanças compartilhadas entre vários tipos de classes.



Tipos abstratos podem ser criados, representados ou simulados de várias maneiras diferentes. Um programador pode significar tipos abstratos usando a palavra-chave abstract explicitamente, incluindo um ou mais métodos na definição da classe, herdando de outro tipo abstrato sem substituir os recursos ausentes necessários para completar a definição da classe ou enviando um método específico para o orientado a objetos linguagem de programação conhecida como esta, que não implementa o método diretamente.

As interfaces podem ser definidas usando métodos abstratos. As classes também podem ser implementadas em interfaces. Se uma classe implementa uma interface e não implementa todos os seus métodos, o significante abstrato deve ser usado, caso contrário, esse significante não é necessário (porque todas as interfaces são inerentemente abstratas). As classes também podem implementar várias interfaces.

Enquanto as interfaces são usadas para especificar interfaces genéricas, os tipos abstratos podem ser usados ​​para definir e impor protocolo (que é um conjunto de operações que todos os objetos que implementam o protocolo desejado devem suportar). Os tipos abstratos não ocorrem em linguagens sem subtipagem. Como tais subtipos são forçados a implementar todas as funcionalidades necessárias, garantindo a exatidão da execução do programa. Existem várias maneiras de criar tipos abstratos: classes base abstratas completas são classes que são explicitamente declaradas como abstratas ou contêm métodos abstratos (não implementados); Os sistemas de objetos Lisp comuns incluem mixins baseados no sistema Flavors;Java, claro; e Traits, que atua como uma extensão para Smalltalk.

Resumo:
1. Classes (ou tipos) abstratos declaram programas; interfaces são tipos abstratos que todas as classes devem implementar para especificar sua interface.
2. Tipos abstratos podem ser significados usando a palavra-chave explicitamente; interfaces são inerentemente abstratas, portanto, não precisam ser significadas usando a palavra-chave (a menos que uma classe específica implemente uma interface, mas não implemente todos os seus métodos).