Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alison Monteiro

Classes abstratas no PHP

Recommended Posts

Uma dúvida talvez bem besta, mas que venho me questionando a respeito:

 

Recentemente utilizei uma classe abstrata que todos os métodos que estavam nela não eram abstratos. Isso é um erro, ou seja, toda classe abstrata deve ter apenas métodos estáticos, ou não necessariamente?

(Aparentemente, em java, todos os métodos devem ser abstratos, por isso a dúvida)

 

Vlw :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, os métodos não precisam ser abstratos, mas a classe abstrata em si não faz sentido sem métodos abstratos.

Os métodos abstratos das classes abstratas podem ser interpretados como requisitos para a classe que for usá-la. Classes abstratas só fazem sentido em desenvolvimento em equipe onde se deseja criar uma "checklist" do que deve existir.

 

Segue links sobre classe abstrata e interface do PHP, mas a ideia é POO, então a linguagem não importa, a implementação e conceitos são os mesmos.

 

Classes Abstratas PHP

 

Interfaces PHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recentemente utilizei uma classe abstrata que todos os métodos que estavam nela não eram abstratos.

Não. Apesar de no princípio não fazer sentido, as vezes existem classes que implementam uma interface que somente alguns métodos devem ser implementados. Os demais métodos, não implementados, devem ser especializados em outra classe. Ou seja, essa classe, não pode ser instanciada. Logo ela é abstrata sem ter métodos abstratos, mas ela herda a assinatura de métodos abstratos da interface.

 

Nesse link, veja a relação entre a Interface Profile e o ProfileDecorator.

 

(Aparentemente, em java, todos os métodos devem ser abstratos, por isso a dúvida)

De jeito nenhum. Java exige que tenha ao menos um método abstrato ou que herde de uma interface ou outra classe abstrata a assinatura de um método abstrato.

 

O PHP, diferente do Java, não tem necessidade de ter um método abstrato. Mas uma classe abstrata não pode ser diretamente instanciada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Apesar de no princípio não fazer sentido, as vezes existem classes que implementam uma interface que somente alguns métodos devem ser implementados. Os demais métodos, não implementados, devem ser especializados em outra classe. Ou seja, essa classe, não pode ser instanciada. Logo ela é abstrata sem ter métodos abstratos, mas ela herda a assinatura de métodos abstratos da interface.

 

Nesse link, veja a relação entre a Interface Profile e o AbstractDecorator.

 

De jeito nenhum. Java exige que tenha ao menos um método abstrato ou que herde de uma interface ou outra classe abstrata a assinatura de um método abstrato.

 

O PHP, diferente do Java, não tem necessidade de ter um método abstrato. Mas uma classe abstrata não pode ser diretamente instanciada.

 

Entendi. Valeu!

Desculpe a confusão.

 

"(Aparentemente, em java, todos os métodos devem ser abstratos, por isso a dúvida)"

Quis dizer apenas sobre os métodos das classes abstratas.

Mas obrigado pela explicação. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.