O que é uma classe abstrata em PHP?
Como pode ser usado?
php
oop
abstract-class
udaya
fonte
fonte
Respostas:
Uma classe abstrata é uma classe que contém pelo menos um método abstrato, que é um método sem nenhum código real, apenas o nome e os parâmetros, e que foi marcado como "abstrato".
O objetivo disso é fornecer um tipo de modelo para herdar e forçar a classe herdada a implementar os métodos abstratos.
Uma classe abstrata é, portanto, algo entre uma classe regular e uma interface pura. As interfaces também são um caso especial de classes abstratas, onde TODOS os métodos são abstratos.
Veja esta seção do manual do PHP para referência adicional.
fonte
1. Não é possível instanciar a classe abstrata : as classes definidas como abstratas não podem ser instanciadas, e qualquer classe que contenha pelo menos um método abstrato também deve ser abstrata.
Exemplo abaixo:
2. Qualquer classe que contenha pelo menos um método abstrato também deve ser abstrata : A classe abstrata pode ter métodos abstratos e não abstratos, mas deve conter pelo menos um método abstrato. Se uma classe tiver pelo menos um método abstrato, ela deverá ser declarada abstrata.
Exemplo abaixo:
3. Um método abstrato não pode conter corpo : Os métodos definidos como abstratos simplesmente declaram a assinatura do método - eles não podem definir a implementação. Mas um método não abstrato pode definir a implementação.
4. Ao herdar de uma classe abstrata, todos os métodos marcados como abstratos na declaração de classe dos pais devem ser definidos pelo filho : Se você herdar uma classe abstrata, precisará fornecer implementações para todos os métodos abstratos nela.
5. Mesma visibilidade (ou menos restrita) : Ao herdar de uma classe abstrata, todos os métodos marcados como abstratos na declaração de classe do pai devem ser definidos pelo filho; Além disso, esses métodos devem ser definidos com a mesma visibilidade (ou menos restrita). Por exemplo, se o método abstrato for definido como protegido, a implementação da função deverá ser definida como protegida ou pública, mas não privada.
6. As assinaturas dos métodos abstratos devem corresponder : Ao herdar de uma classe abstrata, todos os métodos marcados como abstratos na declaração de classe dos pais devem ser definidos pelo filho; as assinaturas dos métodos devem corresponder, ou seja, as dicas de tipo e o número de solicitações necessárias. argumentos devem ser os mesmos. Por exemplo, se a classe filho definir um argumento opcional, onde a assinatura do método abstrato não, não haverá conflito na assinatura.
7. A classe abstrata não suporta herança múltipla : A classe abstrata pode estender outra classe abstrata, a classe abstrata pode fornecer a implementação da interface. Mas ela não suporta herança múltipla.
O exemplo abaixo causará erro fatal: Classe 'cavalo' não encontrada
fonte
Há uma boa explicação disso aqui .
fonte
Classe abstrata
1. Contém um método abstrato
2. Não pode ser inicializado diretamente
3. Não é possível criar um objeto da classe abstrata
4. Usado apenas para fins de herança
Resumo Método
1. Não pode conter um corpo
2. Não pode ser definido como privado
3. As classes filhas devem definir os métodos declarados na classe abstrata
Código de exemplo:
Resultado:
fonte
fonte
Classes abstratas são aquelas que não podem ser inicializadas diretamente. Ou, em outras palavras, podemos dizer que classes abstratas são aquelas classes cujo objeto não pode ser criado diretamente. No PHP, as classes abstratas são desafiadas com a palavra-chave abstract .
Também para se tornar um resumo de uma classe, pelo menos, um método da classe deve ser abstrato.
Para os detalhes da classe abstrata, você pode consultar o meu blog sobre Classes Abstratas em PHP .
fonte
Uma classe abstrata é como a classe normal; ela contém variáveis; contém variáveis protegidas; funções; contém construtor; apenas uma coisa é diferente; contém o método abstrato.
O método abstrato significa um método vazio sem definição, portanto, apenas uma diferença na classe abstrata, não podemos criar um objeto da classe abstrata
O resumo deve conter o método abstrato e esses métodos devem ser definidos em sua classe de herança.
fonte