Key Difference – Classe vs Interface
Programação Orientada a Objetos (POO) é um paradigma comum no desenvolvimento de software. Ele ajuda a trazer cenários do mundo real para a programação usando classes e objetos. Uma classe é um modelo para criar um objeto. O programador pode criar uma classe com propriedades e métodos. Um aluno e um professor são objetos. A criação de um objeto é conhecida como instanciação. OOP também usa interfaces. Interfaces e classes podem parecer semelhantes, mas têm uma diferença. Este artigo discute a diferença entre uma classe e uma interface. A principal diferença entre uma classe e uma interface é que uma classe é um tipo de referência que é um modelo para instanciar um objeto, enquanto a interface é um tipo de referência que não pode ser usado para instanciar um objeto.
O que é classe?
Em OOP, tudo é considerado um objeto. Não é possível criar um objeto sem uma classe. Uma classe é um modelo para criar um objeto. Ao construir uma casa, o arquiteto desenha a planta. O plano é semelhante a uma aula. A casa é semelhante ao objeto. A classe é o plano para construir um objeto. Um objeto é o que é criado usando a classe.
A classe contém as propriedades e métodos. Um aluno pode ter propriedades como nome, nota, número de índice. Um aluno pode ter métodos como ler, caminhar, estudar. Uma classe é criada com as propriedades e métodos necessários.
A sintaxe para criar uma classe em muitas linguagens de programação é a seguinte. Ele é criado usando a palavra-chave class.
class class_name {
// propriedades
//métodos
}
Linguagens de programação como C e Java seguem uma sintaxe semelhante para criar um objeto usando uma classe. Suponha que o nome da classe seja Aluno.
Aluno s1=novo Aluno ();
Este s1 é o objeto. A palavra-chave “new” é usada para alocar memória para as propriedades. Uma classe também tem um construtor para inicializar propriedades ou variáveis.
Membros de classe, como propriedades e métodos, têm modificadores de acesso. Os especificadores de acesso descrevem a acessibilidade e a visibilidade desses membros para outras classes. Os membros da classe podem ter especificadores de acesso como public, private e protected. Membros públicos são acessíveis por outras classes. Membros privados são acessíveis apenas para a classe. Membros protegidos são acessíveis dentro da classe e subclasses relevantes.
O que é Interface?
Abstração é um pilar da programação Orientada a Objetos. É para ocultar os detalhes da implementação e exibir a funcionalidade para o usuário. A abstração é obtida usando classes e interfaces abstratas. Um método abstrato não tem uma implementação. Uma classe que contém pelo menos um método abstrato é chamada de classe abstrata.
Quando existem duas classes abstratas, os métodos declarados nessas classes devem ser implementados. Uma nova classe é usada para implementar esses métodos. Se ambas as classes tivessem o mesmo método, isso poderia causar um problema de ambiguidade. Portanto, linguagens de programação como Java e C possuem uma interface.
Interfaces contém apenas a declaração de métodos. Não existe um método de implementação. Além disso, as interfaces não podem ser usadas para criar objetos. Eles são usados para suportar heranças múltiplas e para proteger o código.
A sintaxe da Interface é a seguinte. Interface use a palavra-chave “interface”.
interface interface_name{
type method1(parameter_list);
type method2(lista_de_parâmetros);
}
Conforme acima, as interfaces possuem apenas a declaração. Não há definição. Portanto, as interfaces não podem instanciar objetos. Ele apenas fornece uma visão abstrata do que é a interface. Os métodos declarados na interface podem ser implementados por uma ou várias classes. Uma classe usa a palavra-chave “implement” para implementar uma interface. Consulte o exemplo abaixo escrito usando Java.
Figura 01: Programar usando Interfaces
De acordo com o programa acima, A e B são interfaces. A interface A tem uma declaração de método que é a soma(). A interface B tem uma declaração de método sub(). A classe C está implementando ambas as interfaces que são A e B. Portanto, a classe C define os métodos sum() e sub(). Após criar o objeto do tipo C, é possível chamar ambos os métodos sum() e sub().
Métodos declarados dentro da interface devem sempre ser públicos porque as classes implementadoras os definem. Uma interface também pode herdar de outra interface.
Quais são as semelhanças entre classe e interface?
- Ambos são tipos de referência.
- Ambos estão relacionados à Programação Orientada a Objetos.
Qual é a diferença entre classe e interface?
Classe vs Interface |
|
Uma classe é um tipo de referência que é um modelo para criar um objeto. | Uma interface é um tipo de referência que não pode ser instanciado. |
Instanciação do objeto | |
Uma classe é usada para instanciar um objeto. | Uma interface não pode ser instanciada porque os métodos não podem realizar nenhuma ação. |
Construtor | |
Uma classe contém um construtor, para inicializar as variáveis. | Uma interface não contém um construtor porque dificilmente são variáveis para inicializar. |
Palavra-chave | |
Uma classe usa a palavra-chave “class”. | Uma interface usa a palavra-chave “interface”. |
Especificador de acesso | |
Os membros da classe podem ser privados, públicos e protegidos. | Membros da interface devem ser sempre públicos porque as classes de implementação os definem. |
Resumo – Classe vs Interface
Classes e Interfaces são amplamente utilizadas em Programação Orientada a Objetos. A diferença entre uma classe e uma interface é que uma classe é um tipo de referência que é um modelo para instanciar um objeto e interface é um tipo de referência que não pode ser usado para instanciar um objeto. Uma classe pode implementar muitas interfaces. Mas só pode estender uma superclasse. Na interface pode herdar muitas interfaces, mas não pode haver uma implementação. Ambos têm sua importância. O programador pode usá-los de acordo com o desenvolvimento do software.
Baixe o PDF Classe vs Interface
Você pode baixar a versão em PDF deste artigo e usá-lo para fins offline conforme nota de citação. Faça o download da versão em PDF aqui Diferença entre classe e interface