Actualmente estas viendo el weblog personal de Carlos Montalvo, un profesional en el desarrollo web con sede en la ciudad de Lima, Perú.

Suscribete a posts o comentarios

Sigueme en Twitter

Clases y Métodos abstractos en PHP 5

08Sep

Escrito por hace 1 año y 11 meses | 5 Comentarios

Como su mismo nombre lo dice, las clases abstractas se utilizan en la OOP para especificar objetos abstractos. Solo sirven para ser heredadas por otras clases o para usarlas sin instanciar es decir son aquellas que forzosamente se ha de derivar si se desea que se puedan crear objetos de la misma o acceder a sus miembros estáticos.

Cuando una clase contiene un método abstracto tiene que declararse abstracta. No obstante, no todos los métodos de una clase abstracta tienen que ser abstractos.

		abstract class Number
	{
		private $value;
		abstract public function value();
		public function reset()
		{
			$this->value = NULL;
		}

	}

	class Integer extends Number
	{
		private $value;
		public function value()
		{
			return (int) $this->value;
		}
	}

	$num = new Integer; /* Bien */
	$num2 = new Number; /* Mal */

Hemos creado una clase abstracta, Number que se extendiendo por la clase Integer. Como hemos declarado la clase Number como abstracta, no podemos crear una instancia de ella. Si miramos a la clase Number, podremos comprobar que se define 2 funciones: value() y resert(). En una clase abstracta, no es necesario proporcionar ningún código para métodos, aunque podemos incluir si lo deseamos. En el caso de la clase Number, como value() es algo específico a un tipo determinado de número, se deja para que lo implante la clase hija.

Para forzar este comportamiento en un código de escritura de desarrollador, la palabra clave abstract utilizada para identificarlo tiene simplemente un marcador de posición en la clase Number, algo que no obstante, no es cierto para el método reset(), que es consistente para cualquier tipo de número específico.

Las clases abstractas pueden extenderse sin implantar todos los métodos abstractos definidos dentro. Es decir, una clase hija puede también declararse como abstracta si no implanta todos los métodos abstractos de su padre(o padres).

Categorizado :Desarrollo Web

Etiquetado :Definiciones,php

5 Comentario(s) para "Clases y Métodos abstractos en PHP 5"

Bitacoras.com

September 8th, 2008 hace 1 año y 11 meses

Información Bitacoras.com...

Si lo deseas, puedes hacer click para valorar este post en Bitacoras.com. Gracias....

Pablo Bozzolo

November 30th, 2008 hace 1 año y 9 meses

Si quiero que una clase no sea instanciable puedo anteponerle ABSTRACT y ya ? esta mal conceptualmente ? me han dicho que esta mal pero no me convece. Gracias!

Pablo Bozzolo

November 30th, 2008 hace 1 año y 9 meses

Oye... uso XP y no Linux como dice WP :D

Carlos Montalvo

December 1st, 2008 hace 1 año y 9 meses

@Pablo: Las clases abstractas son para especificar objetos abstractos, ahora me dices que quieres anteponer a una clase la palabra abstract para no instanciarla la pregunta seria por que no quieres instanciarla que funcion tendrian.

Pero de echo si la vas a usar solo para heredar entonces no seria abstracta?

lisandro

February 26th, 2009 hace 1 año y 6 meses

Del manual de php (siempre la mejor fuente para estas cosas)
"Cuando se hereda desde una clase abstracta, todos los metodos marcados como abstractos en la declaración de la clase padre, deben de ser definidos por la clase hijo;",