¿Es lo mismo una clase que un objeto?

Respuesta breve: no. Respuesta larga: noooooooo.

Se puede leer en muchos foros y en algún que otro blog que se usan indistintamente ambas palabras. Pero es incorrecto, donde decimos clase no podemos decir objeto. Ni al revés.

Este capítulo es un pequeño paréntesis para aclarar esta duda que me han planteado los principiantes en más de una ocasión.

Un objeto es una variable. Pero es una variable especial, una variable que se basa en una clase.

Una clase es una “plantilla de objetos”. Es decir, define cómo son los objetos que se basan en ella. En la clase es donde definimos las propiedades y los métodos que va a tener un objeto. También definimos en ella si estos objetos son visibles para el exterior o no (si son public, private o protected).

La clase es donde tenemos el código:

class Clase
{
    public $propiedadA;

    public metodoA()
    {
    }
}

Y un objeto se crea a partir de una clase:

$objeto = new Clase();

Podemos crear varios objetos con una misma clase:

$objeto2 = new Clase();
$objeto3 = new Clase();
…

Todos estos objetos tienen en común el mismo código (tienen los mismos métodos). Pero, para cada uno de ellos, las propiedades son diferentes. Esto significa que para todos estos objetos el método metodoA() es idéntico. Pero cada uno de ellos va a tener un valor diferente para la propiedad $propiedadA.

Un objeto no tiene código; el código lo tiene la clase. El objeto hace uso del código que está definido en la clase.

Espero que esta aclaración ayude a aportar algo de luz y te ayude a tener cuidado y no confundir ambos términos.

Autor:
Nivel: Intermedio
Palabras clave:
Fecha publicado:
Fecha actualizado: 22-08-2016

Otros capítulos de la misma serie

Este capítulo es parte de la serie: Curso de Programación orientada a objetos en PHP.

Y muchos más en preparación.

Disponible en los planes: PHP a tope Laravel hero