Bien, comencemos, vamos a cerrar todas las clases y también vamos a cerrar el proyecto.
Cerrar todo, nos vamos a Foil Cloud Project como siempre, y vamos a crear un nuevo proyecto New Project.
Como siempre, yaba.
Siguiente.
Siguiente y ennombre proyecto p o clases abstractas finalizar.
Ven, partimos primero con los pacato acá.
En ese recé vamos a crear un opacados por punto a Guzmán.
En nombre proyecto o clases abstracta punto for de formulario ok.
Bueno, incluso el peor.
Clases abstracta también podrían ser su pacato.
Por ejemplo peó punto, clases abstracta punto en fin o clases punto abstractas.
Pero lo puse todo junto para simplificar, pero como lo quiera manejar bien, vamos a crear otro package
sobre form.
Entonces seleccionamos el package click derecho new package.
Vamos a colocar elementos
perfecto.
Entonces tenemos dos рамках Ford y elementos en Ford.
Vamos a dejar la clase con el método Main y elementos.
Vamos a dejar nuestras clases de formulario que representan campo de formulario cesor estapa catch elementos.
Vamos a crear una nueva clase y vamos a comenzar esta clase abstracta
elemento form.
Entonces lo primero, indicar que es una clase abstracta.
Entonces por acá antes del public ser Anteo o también puede después del public es un modificador, se
fijan.
Da lo mismo.
Puede ir antes tal como está.
O también después del público se fijan exactamente igual.
Pero es mejor antes, porque a la vista queda mejor a una incertidumbre, a una clase abstracta.
Se fijan, entonces mejor la dejamos acá, pero netamente visual.
Bien, entonces una clase abstracta con un método abstracto.
Y lo primero que vamos a definir entonces un public, pero también abstracto, porque un método abstracto
para retornar un string a dibujar html y listo, se fijan punto y coma.
No va con llaves.
Es decir, si colocamos llave sería un error porque estamos indicando que es un método abstracto.
Por ejemplo, si colocamos llave, marca error, se fijan.
Un método abstracto no puede tener un body, un cuerpo, el cuerpo, la implementación la tiene que
tener las clases hijas.
Entonces solamente punto y coma.
Entonces es muy importante solamente para indicar un protocolo de implementación en la jerarquía.
Un diseño, es decir, toda clase hija elemento va a implementar su propia forma de renderizar en el
HTML con sus etiquetas y es lo que vamos a ver.
Otro tema importante que una clase que tiene un método tracta.
Un método abstracto como esta está obligada a hacer una clase abstracta, porque por ejemplo, si quito
en la clase la palabra abstracta marca un error, porque al tener un método abstracto requiere que la
clase sea abstracta siempre.
Pero una clase abstracta podría tener métodos que no ser abstracto, es decir, al revés, se puede
solamente por diseño.
En el fondo, una clase abstracta sin método abstracto evita que se quede instanciar y la podrían utilizar
solamente para Laurencia.
Pero bien, continuemos entonces por acá vamos a tener atributos protected protegido
valor protegido.
Por qué?
Porque la idea de que la clase cija en el método dibujar HTML puede utilizar estos atributos, lo pueda
acceder sin necesidad de implementar el método GET, por ejemplo, ya que lo vamos a utilizar prácticamente
dentro de la clases hijas.
Bueno, y también vamos a requerir el método set valor para poder asignar el valor de defuera un método
público.
El nombre.
Entonces nombre campo y el flor de campo son dos atributos que son en común a cualquier input o elemento
el formulario en HTML.
Bueno, no se preocupen si no han visto nunca HTML, si no han trabajado con aplicaciones web.
En fin, da lo mismo.
Esto es solamente un ejemplo para demostrar el polimorfismo en la herencia.
En clase es abstracta y como simplemente forma distinta.
Ahora es un ejemplo completo de toda forma.
Lo pueden implementar en un proyecto web, por ejemplo en una aplicación web con Java, con Starlet,
con JSP o algún framework.
Los siguientes constructores entonces por acá vamos a crear generar un constructor, entonces acá constructor
primero vacío sin nada y además otro más por acá y genere constructor solamente con el nombre, sin
el valor ok.
Y este de acá elemento form 10.
Es decir, va a llamar a este constructor.
Bueno, después vamos a ocupar este vacío para inicializar los objetos del tipo list, los ArrayList,
los mensajes de error, por ejemplo, la lista con los textos terror y también la lista con los valores
un array list.
Pero después vamos a ver entonces por eso lo dejé creado y acá simplemente lo llamamos para inicializar
estas listas.
Pero por ahora no se preocupen.
Después lo vamos a ver.
Entonces por eso implemente estos dos constructores.
Entonces uno para asignar el nombre de las listas que faltaría el valor.
El valor lo tengo que al final de alguna forma, por ejemplo, con el método set generated buscamos
set solamente set valor.
Nada más.
Entonces el nombre por constructor, el valor vía método set y nada más, porque tanto el valor como
el nombre lo vamos a mostrar en el dibujar html acá.
Por lo tanto, el GET no sería necesario un método público en get no necesario.
Entonces por eso también logi protected sean protegidos no implementarlos, quieten etcétera.
Excepto el set valor.
Nada más.
Es decir, que no sean de acceso público.
Aunque igual depende de nuestro diseño.
Podríamos implementar el ticket para el valor o para nombre, pero no es tan necesario aquí.
Faltaría.
Bueno, faltaría la lista de errores y la lista de valedores.
Pero eso después lo vamos a implementar.
Por ahora quedamos hasta acá.
Ya tenemos nuestra clase Padre abstracta elemento form y continuamos lo siguiente clase creando las
clases hijas valga la redundancia el input form y también el text areas form.
Nos vemos.