Bienvenidos.
Continuamos con las clases abstractas en Yaba.
Bien, pero creo que es una clase abstracta.
Bueno, hay que partir de una clase abstracta, está hecha para herencia.
Representa siempre una clase padre de la cual tenemos que extender, pero no cualquier clase padre,
sino más bien representa un concepto muy genérico en nuestra aplicación, un concepto abstracto.
Bueno, de ahí viene el nombre.
Por lo tanto, es tan conceptual que no se debería crear una instancia de esta clase, sino las instancias
se crean a partir de la clase concreta o la clase cija que entienden de esta clase abstracta.
Bien.
Otro tema importante es que una clase abstracta debe tener un método, que también son abstractos.
Esto quiere decir métodos que no tienen una implementación específica.
No, porque se podría implementar de diferente forma según la clase hija, según la clase concreta,
similar a las or critura, muy parecido, pero sin implementar.
Entonces cada hija va a sobrescribir este método con una implementación única y particular de cada una.
Bien, entonces veamos el concepto.
Entonces, cuando tenemos una jerarquía de clases donde algún método está presente en toda la jerarquía,
es decir, en todas las clases hijas.
Pero cada una de estas clases la implementa de forma distinta.
Es decir, si tiene que redefinir este método completamente desde cero.
En cada implementación, en cada clase hija concreta, se utiliza el modificador abstracto en la declaración
de la clase.
Es decir, arriba en el public class, por ejemplo, se coloca el abstract esta palabra clave.
Entonces, de esa forma aclarame que es una clase abstracta y una clase abstracta podría contener métodos
abstractos.
Es decir, estos métodos que están sin implementar y que la tienen que implementar la clase cija como
un contrato de la jerarquía.
Entonces una clase atracti está diseñada para ser siempre una superclase, una clase padre y no se puede
crear una instancia.
No se puede ejemplarizar con el New York en la vida real.
Por ejemplo, el concepto de comida.
Nunca decimos que hoy día comí comida.
No siempre nos referimos a algo concreto.
Por ejemplo, hoy día me comí un pan, hoy día comí arroz.
Un chocolate, se fijan.
Pero cosa concreta.
Igual cuando vamos por la calle y pasa un automóvil, un vehículo, por ejemplo, por lo general siempre
hicimos algo particular.
Mira, ahí pasó, no sé, un Ferrari, pero es poco común decir que mira, mira ese vehículo.
No siempre nos referimos a algo más concreto y en nuestras aplicaciones pasa lo mismo.
Representamos modelo por un tema de diseño, de jerarquía, de clase como un agente abstracto, como
un concepto.
Y a partir de este concepto abstracto presentamos un diseño, es decir, métodos que tienen que implementar
y están presente en todas las clases hijas.
Veamos algunos ejemplos.
Bueno, el ejemplo que estamos trabajando persona con atributos Heidy Nombre, apellido, email, fecha
registro una clase padre abstracta que representa un concepto nuestra aplicación, pero algo genérico.
Es decir, en ninguna parte vamos a crear una instancia de persona, no nos la podemos ejemplificar,
más bien lo que vamos a crear y vamos a trabajar con clase más concreta que hereden de la clase persona
y podría tener métodos en común para cualquier tipo persona, ya sea un cliente, sea un profesor,
sea un alumno.
Es decir, todos se tienen que registrar, modificar, eliminar de alguna forma similar o distinta,
por ejemplo, persistiendo o almacenando no solamente los atributos en común, sino también los atributos
propios de cada uno de estos tipos concreto y además en diferentes tabla de la base auto, por ejemplo.
Es decir, podría variar la implementación de tu método, pero si tienes que estar presente en toda
la clase cija es como un contrato.
De hecho, cuando heredamos de una clase padre que es abstracta, estamos obligado a implementar estos
métodos por contrato y como sintaxis.
En Java, una clase abstracta se define con el modificador abstracto en la declaración de la clase donde
va el nombre, por ejemplo APTRA public class se fijan.
De esa forma se define una clase abstracta y una clase abstracta podría tener métodos abstracto que
también lleva su modificador abstracta y son métodos que no tienen implementación, es decir, que no
tiene cuerpo, no tiene llave, simplemente es una firma.
El método o declaración del método y finaliza con los paréntesis y punto y coma.
La implementación la llave la tienen que implementar la clase concretas, las clases hijas.
Pero también una clase abstracta puede tener métodos con implementación y también métodos sin implementación,
o incluso una clase abstracta podría no tener métodos abstracto y solamente se define como abstracta
por un tema de diseño, por un tema de concepto.
Pero si cuando una clase al menos tiene un método abstracto, la clase tiene que ser abstracta.
Veamos otro ejemplo elemento formulario bueno, cuando trabajamos en HTML en una aplicación web.
Bueno, si no han visto HTML, no se preocupen, solamente algo conceptual.
Por ejemplo, trabajamos con input o con entradas del tipo texto, pero también del tipo password para
ocultar el contenido.
También litas seleccionable o combobox se boxes, radio putón.
En fin, son varios tipos de elemento y también textarea para colocar.
Un gran contenido de texto.
Entonces cada uno de esto tiene distinta forma, pero tienen en común todos son elementos, formularios.
Además, tienen un tipo, tienen un valor y un nombre del campo, pero cada uno se va a renderizar o
dibujar en el HTML de forma distinta.
Entonces, claro.
Por ejemplo, el elemento del tipo select o del tipo check boxes, o del tipo input text o del tipo
radio putón.
En fin, si tienes que dibujar con su propia implementación, entonces no es algo que se pueda reutilizar
del padre, porque siempre se van a dibujar de forma distinta.
El método tiene que ser abstracto.
Otro ejemplo figura geométrica, un círculo cuadrado, un triángulo.
A todo se le calcula el área.
Todos tienen perímetro y todos se pueden dibujar en la pantalla, pero cada uno lo puede hacer de forma
distinta.
Se fijan, pero todos tienen algo en común que son figuras geométricas y son parte de una jerarquía
de clase.
Otro ejemplo también mamiferos podría tener atributos en común, por ejemplo, el hábitat, el peso,
el color.
Nombre científico bueno y mucho más.
La altura, el largo.
En fin.
Pero todo tiene comportamiento en común.
Por ejemplo, hace ruido.
Comer, dormir, moverse, correr.
En fin.
Pero cada uno lo implementa de forma distinta.
Algunos mamíferos son mucho más lento.
Otros son mucho más rápido.
La forma de comer es distinta y lo que comen es diferente.
La forma de hacer ruido, comunicarse es diferente.
Algunos rugen, otros gruñen, otros ladran.
En fin, hay distintas formas de mamífero.
Bueno, hay beret, tipo de felinos caninos y entre los felinos tenemos varios tipos también o implementaciones
concreta como el león, el tigre.
Pero también tenemos los gatos que son mascotas, gatos salvajes o silvestres como el lince canino,
perro, lobo, zorro y así.
Bueno, y al final eso es la herencia con clases abstracta puede representar algo abstracto y puede
reunir varias implementaciones concreta que realizan el mismo comportamiento, los mismos métodos,
pero cada uno de forma distinta.
Bien, nos vemos en la siguiente clase.