Qual é a diferença entre classe abstrata e interface em PHP

Índice:

Anonim

o principal diferença entre a classe abstrata e a interface em PHP é que classe abstrata pode consistir em métodos abstratos e métodos não abstratos, enquanto todos os métodos em uma interface não têm implementações.

PHP é uma linguagem de script do lado do servidor. É uma das linguagens mais populares no desenvolvimento web. PHP permite o manuseio de arquivos, manuseio de formulários, envio de e-mails, upload de arquivos, conexão de uma aplicação com SGBD como MySQL e muitas outras tarefas. Frameworks como Zend e Code Igniter são baseados em PHP. PHP também suporta Programação Orientada a Objetos (OOP). Um conceito importante em OOP é abstração. Isso ajuda a ocultar implementações e exibir apenas a funcionalidade para o usuário. A classe abstrata e a interface são dois métodos para obter abstração.

Abstração, classe abstrata, interface, OOP, PHP

O que é classe abstrata em PHP

Um método abstrato é um método que não possui nenhuma implementação. Uma classe abstrata é aquela que possui pelo menos um método abstrato. Ele pode ter métodos abstratos, bem como métodos não abstratos. A palavra-chave “abstrato” é usada para declarar uma classe abstrata. Além disso, a classe que estende a classe abstrata deve fornecer as implementações para os métodos abstratos dessa classe. Os programadores não podem criar objetos usando uma classe abstrata, mas podem criar um objeto de uma classe que estenda a classe abstrata.

Figura 1: classe abstrata em PHP

Na imagem acima, Shape é uma classe abstrata. Ele tem um método abstrato chamado draw e um método não abstrato chamado display. A classe triângulo estende Forma. Portanto, a classe de triângulo fornece a implementação para o método abstrato draw. Na linha 19, um objeto de Triangle é criado. Na linha 20, o método de desenho é chamado usando esse objeto. Portanto, o método de desenho é executado e exibe o “Triângulo” no console.

O que é interface em PHP

Todos os métodos em uma interface são métodos abstratos. Em outras palavras, ele contém apenas protótipos de funções ou funções sem implementações. O programador não pode criar objetos usando uma interface. Uma interface é declarada usando a palavra-chave “interface”. Mesmo que os métodos em uma interface sejam abstratos, o programador não os declara com a palavra-chave abstract. Em vez disso, esses métodos devem ter o escopo de visibilidade pública. Uma classe que implementa uma interface deve fornecer as implementações para todos os seus métodos abstratos.

Figura 2: programa PHP 1 com uma interface

No programa acima, Shape é uma interface. Ele tem um método chamado draw. Não tem implementação. A classe Triângulo estende a Forma. A classe Triangle fornece a implementação do método de desenho. Na linha 16, um objeto do objeto Triângulo é criado. Na linha 17, o método draw é chamado usando esse objeto. Portanto, o método de desenho executa e exibe o “Triângulo” no console.

Além disso, as interfaces também ajudam a implementar herança múltipla. Herança múltipla é o processo de permitir que uma classe use atributos e métodos de várias classes.

Figura 3: programa PHP com interfaces

A interface A tem um método methodA. Da mesma forma, a interface B possui um método methodB. Esses métodos são protótipos de função. Em outras palavras, esses métodos não têm implementações. A Classe Test implementa a interface A e B. Portanto, essa classe fornece implementações para o método A e o método B. A classe Test também possui seu próprio método denominado methodTest. A linha 26, cria um objeto de Teste. Em seguida, o métodoA, o método e o métodoTest são chamados usando esse objeto.

Diferença entre classe abstrata e interface em PHP

Definição

Uma classe abstrata em PHP é uma classe declarada com uma palavra-chave abstrata e é uma coleção de métodos abstratos e não abstratos. Em contraste, uma interface em PHP é um tipo de referência e consiste em uma coleção de métodos sem implementações ou protótipos de função. Portanto, esta é a principal diferença entre Abstract Class e Interface em PHP.

Métodos

Uma classe abstrata pode ter métodos abstratos, bem como métodos não abstratos, enquanto todos os métodos em uma interface são métodos sem implementações.

Palavra-chave

Enquanto uma classe abstrata é declarada com a palavra-chave “abstract”, uma interface é declarada com a palavra-chave “interface”.

Uso

Outra diferença entre Abstract Class e Interface em PHP é que uma classe abstrata ajuda a obter abstração, enquanto uma interface ajuda a alcançar abstração, bem como herança múltipla.

Conclusão

A linguagem PHP oferece suporte à Programação Orientada a Objetos. A abstração é um pilar da OOP. Classes abstratas e interfaces são dois métodos de obtenção de abstração. A principal diferença entre a classe abstrata e a interface em PHP é que a classe abstrata pode consistir em métodos abstratos e métodos não abstratos, enquanto todos os métodos em uma interface não têm implementações.

Referências:

1. “Abstract Classes in PHP.” GeeksforGeeks, 11 de dezembro de 2018, disponível aqui. 2. “Multiple Inheritance in PHP.” GeeksforGeeks, 21 de fevereiro de 2019, disponível aqui.

Qual é a diferença entre classe abstrata e interface em PHP