Vamos a hablar ahora sobre el tema de las clases abstractas.
Déjeme crearla primero y luego les explico qué es lo que hace la palabra reservada abstract.
Es necesaria para poderla definir y decirla que es una clase abstracta.
No se preocupen por esos errores que están apareciendo es porque estoy explicando mientras escribo aunque
no se preocupen.
Luego viene la palabra reservada también class.
De esta manera estoy diciendo que estoy creando una clase abstracta seguido del nombre de la clase.
Este caso va a ser animal abren y cierran llaves.
Voy a definir que este animal tiene un número cerrado de patas o sea un número entero de patas Punto
y Coma y también va a tener un método que no va a regresar nada voy llamado emitir sonido noten que
no estoy implementando el método o simplemente lo estoy definiendo.
Esta clase abstracta para qué me va a servir.
Vamos a intentar usarla directamente.
Paréntesis abro y cierro llaves.
Voy a crearme un perro por ejemplo feina el perro va a ser igual.
Año animal parentesis Punto y Coma note que no tengo un constructor por lo cual no necesito mandar ningún
argumento pero para mi sorpresa estoy recibiendo un error acá y me dice que las clases abstractas no
pueden ser creadas con la expresión NIU y eso es correcto.
Entonces Fernando para qué diablos me va a servir una clase abstracta si no sé si ni siquiera puedo
crear instancias de una clase abstracta me va a permitir a mí poder obligar a otras clases a que implementen
estos métodos y propiedades.
Por ejemplo yo voy a crearme ahora una clase llamada perro orillero yaks pero yo quiero obligar a esta
clase A que cumpla la condición de que es un animal.
O sea que tenga las patas y que tenga un método en su interior llamada emitir sonido para obligar a
la clase perro a que tenga por lo menos esas dos cosas.
Lo hago de la siguiente manera implement espacio animal.
No se asusten porque ahora vamos a tener un par de errores en la clase pero también voy a comentar esta
línea de código porque por los momentos no la voy a ocupar y quiero evitar y enfocarme en los errores
específicos de lo que acabo de hacer.
Si miro que el perro tiene un subrayado rojo me dice que falta la implementación de animal punto de
emitir sonido y el de animal punto patas y el ser animal punto Pats.
En pocas palabras si yo intento dejarlo así no me va a funcionar mi programa porque está incorrectamente
implementado lo que es la clase abstracta animal tal vez sonará un poco raro pero en pocas palabras
o en castellano Dorman lo que nos está diciendo es o lo que le estamos diciendo mediante esta implementación
es que el perro tiene que tener patas y el perro tiene que tener un emitir sonido puede tener número
de colas número de cabezas números de cualquier otra cosa pero tiene que tener la fuerza estas dos cosas
patas y emitir sonidos.
Entonces voy a decir Hint patas Tocoma y noten que aquí ya debería desaparecer o error.
Ahora sólo me falta el de emitir sonido y podría tener otras cosas colas por ejemplo que sea un perro
mutante que tiene cinco colas o una cosa así o un pokemon en caso de que estemos hablando de otras cosas
pero todavía no implementó el emitir sonido.
Vamos a hacerlo de una vez voy emitir sonido parentesis y lo único que va a hacer es vamos a hacer el
del sonido que hace el perro guauuu.
De esta manera noten que los errores desaparecen.
Estoy implementando correctamente la clase animal porque cuesta emitir sonido y está en las patas.
Noten que también tienen que cumplir estas condiciones.
Por ejemplo si las patas las colocara como si fuera el string eso incorrectamente lo implementa y aquí
no va a disparar el error.
Ok entonces para eso me sirven las clases abstractas me sirven para obligarme a mí o obligar a otros
desarrolladores a que cuando implementen una clase abstracta por ejemplo cuando implementen esta clase
tienen que cumplir estas condiciones ustedes especifican acá si creamos una nueva clase por ejemplo
clase gato.
Esto implementa implement animal orillero llaves y a fuerza tenemos que ponerle el número de patas patas
y también tengo que implementar voy emitir sonido parentesis y el sonido que emite el gato va a ser
enviado al punto y coma.
De esta manera ya tengo implementado el animal también el gato.
Eso ya me permite a mí poderla utilizar por ejemplo en vez de hacerlo directamente que el perro es de
una clase animal de esa clase que no me va a dejar.
Puedo poner aquí perro y ahora puedo llamar al perro punto digamos emitir sonido Punto y Coma puedo
hacer lo mismo con el gato en el gato es igual a new gato lo tengo en la capitalización de las palabras
y ahora sería gato punto emitir sonido Punto y Coma ejecuto y deberíamos de tener ambos sonidos de los
animales.
Eso sería básicamente todo y los veo en el.