Estas clase son aquellas que no se instancian. Esto significa que no se crea ningún objeto en la clase. Sin embargo, las clases abstractas pueden servir de base para definir una subclase que sí puede instanciarse siempre que esta subclase no sea igualmente abstracta.
El método abstracto debe estar definido en una clase (abstracta) y nunca puede ser privado. Para que quede definida la clase se utiliza la palabra clave ‘abstract’ antes de la definición de la clase o método.
Si la subclase no desarrolla o implementa todos los métodos abstractos de la superclase es implícitamente abstracta aunque no se haya declarado con la palabra ‘abstract’.
Ejemplo:
Definición de una clase abstracta
<?php abstract class superclase { //atributo protegido protected $x; //dos métodos para acceder al atributo protegido // 1) lectura public function get () { return "GET = $this->x"; } // 2) escritura abstract public function put ($valor); } ?>
Definición de una subclase que hereda de la superclase
<?php class subclase extends superclase { //implementación del método de escritura. public function put ($valor) { $this->x = $valor; } } ?>
Utilización de la subclase
<?php $objeto = new subclase (); //instanciación $objeto->put ("altruistas.org"); echo $objeto->get (), '<br>'; //por herencia ?>