Abstração de Objetos

PHP 5 introduz métodos e classes abstratos. Não é permitido criar uma instância de uma class que foi definida como abstrata. Qualquer classe que contêm pelo menos um método abstrato deve também ser abstrata. Métodos definidos como abstratos simplesmente declaram a assinatura do método, eles não podem definir a implementação.

A classe que implementa o método abstrato deve definir com a mesma visibilidade ou mais fraca. Se o método abstrato é definido como protected, a implementação da função deve ser definida ou como protected ou como public.

Exemplo 19-16. Exemplo de classe abstrata

<?php
abstract
class ClasseAbstrata {

   
/* Força a classe que extende (a subclasse) a definir esse método */
   
abstract protected function pegarValor();
   
   
/* Método comum */
   
public function imprimir() {
     print
$this->pegarValor();
   }

}

class
ClasseConcreta1 extends ClasseAbstrata {

   
protected function pegarValor() {
     return
"ClasseConcreta1";
   }

}

class
ClasseConcreta2 extends ClasseAbstrata {

   
protected function pegarValor() {
     return
"ClasseConcreta2";
   }

}

$classe1 = new ClasseConcreta1;
$classe1->imprimir();

$classe2 = new ClasseConcreta2;
$classe2->imprimir();
?>

Código antigo que não tem classes ou funções definidas pelo usuário como 'abstract' deve ser executado sem modificações.