Diferença Entre Classe Abstrata E Interface

Diferença Entre Classe Abstrata E Interface
Diferença Entre Classe Abstrata E Interface

Vídeo: Diferença Entre Classe Abstrata E Interface

Vídeo: Diferença Entre Classe Abstrata E Interface
Vídeo: Entenda de forma DEFINITIVA a DIFERENÇA entre classes ABSTRATAS e INTERFACES - POO 2024, Abril
Anonim

Classe abstrata vs interface

A classe abstrata e a Interface são duas construções orientadas a objetos encontradas em muitas linguagens de programação orientadas a objetos, como Java. A classe abstrata pode ser considerada como uma versão abstrata de uma classe regular (concreta), enquanto uma interface pode ser considerada como um meio de implementar um contrato. Classe abstrata é uma classe que não pode ser inicializada, mas pode ser estendida. Interface é um tipo que deve ser implementado por outras classes. Em Java, as classes Abstract são declaradas usando a palavra-chave Abstract, enquanto a palavra-chave interface é usada para definir uma interface.

O que é uma classe abstrata?

Normalmente, as classes abstratas, também conhecidas como classes abstratas de base (ABC), não podem ser instanciadas (uma instância dessa classe não pode ser criada). Portanto, classes abstratas só são significativas se a linguagem de programação suportar herança (capacidade de criar subclasses a partir da extensão de uma classe). Classes abstratas geralmente representam um conceito ou entidade abstrata com implementação parcial ou nenhuma implementação. Portanto, as classes abstratas atuam como classes pai das quais as classes filho são derivadas para que a classe filho compartilhe os recursos incompletos da classe pai e a funcionalidade pode ser adicionada para completá-los.

As classes abstratas podem conter métodos abstratos. As subclasses que estendem uma classe abstrata podem implementar esses métodos abstratos (herdados). Se a classe filha implementa todos esses métodos Abstract, é uma classe concreta. Mas se isso não acontecer, a classe filha também se torna uma classe Abstract. O que tudo isso significa é que, quando o programador nomeia uma classe como Abstract, ele está dizendo que a classe será incompleta e terá elementos que precisam ser completados pelas subclasses herdadas. Esta é uma boa maneira de criar um contrato entre dois programadores, o que simplifica as tarefas de desenvolvimento de software. O programador, que escreve código para herdar, precisa seguir exatamente as definições do método (mas é claro que pode ter sua própria implementação).

O que é uma interface?

Uma interface é um tipo abstrato usado para especificar um contrato que deve ser implementado por classes, que implementam essa interface. A palavra-chave interface é usada para definir uma interface e a palavra-chave Implements é usada para implementar uma interface por uma classe (na linguagem de programação Java). Normalmente, uma interface conterá apenas assinaturas de método e declarações de constantes. Qualquer interface que implemente uma interface específica deve implementar todos os métodos definidos na interface ou deve ser declarada como uma classe abstrata. Em Java, o tipo de uma referência de objeto pode ser definido como um tipo de interface. Mas esse objeto deve ser nulo ou deve conter um objeto de uma classe, que implementa essa interface específica. Usando a palavra-chave Implements em Java, você pode implementar várias interfaces para uma única classe.

Qual é a diferença entre Abstract Class e Interface?

Classes abstratas geralmente representam um conceito abstrato ou uma entidade com implementação parcial ou nenhuma implementação. Por outro lado, uma interface é um tipo abstrato usado para especificar um contrato que deve ser implementado por classes. As classes abstratas devem ser herdadas (ou estendidas), enquanto as interfaces devem ser implementadas. As classes abstratas podem conter métodos abstratos, enquanto uma interface deve conter apenas métodos abstratos. As classes abstratas podem conter qualquer variável, mas as interfaces só podem definir constantes. Uma classe não pode herdar de mais de uma classe abstrata, mas pode implementar várias interfaces. Uma interface não pode implementar outra interface. No entanto, uma interface pode estender uma classe.

Recomendado: