Clases y objetos

Ya sabes hacer un objeto con {}. Una clase es el molde para hacer muchos objetos iguales, sin copiar y pegar.

Imagina un juego con varios enemigos. Con lo que ya sabes, harías esto:

Funciona, pero con 20 enemigos serían 20 variables sueltas, y la función recibirDaño vive separada del objeto al que le hace algo. Una clase junta los datos y las acciones en un solo molde.

class define el molde. El constructor es una función especial que se ejecuta al crear cada objeto nuevo, para darle sus datos iniciales. this significa "el objeto que se está creando ahora mismo".

Una función escrita dentro de la clase es un método. En vez de una función suelta que recibe el objeto como argumento, el objeto mismo sabe hacer la acción.

Compara enemigo1.recibirDaño(30) con la versión anterior, recibirDaño(enemigo1, 30): dicen lo mismo, pero ahora se lee como una orden que le das al objeto, no una función que opera sobre él desde afuera.

Con extends, una clase hereda todo lo de otra y solo agrega o cambia lo distinto. super(...) llama al constructor de la clase de la que hereda.

class, constructor, this, métodos, y herencia con extends y super. Todo lo que ya usabas con objetos sueltos, ahora con un molde reutilizable detrás.

Con esto tienes otra forma de organizar programas más grandes. Pero antes de crecer más, falta algo importante: qué hacer cuando algo sale mal.