Ayuda con clases abstractas
Primero que nada agradezco por todos los consejos que me dado.
Ya tenía ratito que no posteaba.
Asi que necesito saber como funcionan las clases abstractas, y quisiera ver la posibilidad de que recomendaran un buen libro para estudiar
las clases abstractas o de plano y quien me puede instruir en java.
Ya que la verdad ando muy mal.
Saludos.
- Inicie sesión o regístrese para enviar comentarios
Ligas... aquí aquí aquí aquí
Ligas...
aquí
aquí
aquí
aquí
aquí
Nadie más contesto esto? :-O
Nadie más contesto esto? :-O
Las clases abstractas sirven para definir un comportamiento base y dejar que las subclases definan lo que "hace falta".
Lo contrario a lo abstracto es lo concreto, no? Como tales, las clases abstractas no pueden ser instanciadas. Es decir lo siguiente no es posible:
Por que no hay nada en concreto.
Cuando se hereda de una clase abstracta, se deben de implementar los métodos abstractos que esa clase defina ( de lo contrario la clase seguirá siendo abstracta )
En el ejemplo anterior, la clase saludador, define la operación saluda, pero no dice como se implementa. Las dos subclases, son las encargadas de decir que hacer. Una escribe en la consola y la otra se conecta a un servidor y escribe ahí ( por cierto, eso no funciona de nada, pero ejemplifica).
Ahora, puesto así, no habría mucha diferencia entre una interfaz y una clase abstracta. Lo interesante viene cuando se pone mucho más código en la clase abstracta y se deja el detalle a las subclases. Las interfaces no pueden poner código pero lo siguiente si es válido:
Es este otro ejemplo, la clase "ValidarDatos" tiene el algoritmo general de como se valida un dato. Acá no es relevante para el ejemplo, simplemente digamos que los recorre todos y hace "algo" con ellos. Lo interesante es que al final, el validador los persiste, pero deja abierta la implementación de como persistir esos datos. Las subclases tienen que definir como persistir esos datos, por ejemplo escribiendolos al disco duro, a una base de datos, escribiendolos por la red, transformandolos primero en JSON, XML, o algun otro formato etc. etc. Pero la clase base, ya tiene, definido que hacer con lo importante ( los datos ). Con una interfaz no es posible hacer esto.
Para ver ejemplos del mundo real, se puede echar un ojo a AbtractList de Java que sirve para hacer una implementación de la clase List, sin tener que escribir tooooodo desde cero.
La desventaja ( que viendolo bien , no es una desventaja como tal, sino una característica ) es que, claro, solo se puede heredar de una clase, pero esa ya es otra historia.
Espero que esto te sirva.