Hola a todos, hoy os explicare que son y para que sirven las clases abstractas en Java.
Una clase abstracta es una clase con 0 o mas métodos sin implementar (igual que hacíamos con las interfaces). Cuando una clase es abstracta, no se pueden crear objetos de estas clases, en las clases hijas sera donde se implementen los métodos no implementados en la clase padre.
Como hacer clases abstractas
Para indicar que una clase es abstracta, escribimos abstract entre el modificador de acceso y class, así quedaría:
Dejamos un método sin implementar, por ejemplo, el método plus, para que cada clase hija implemente su propio método de forma diferente:
Como vemos, incluimos la palabra abstract igual que en la clase.
Ejemplo
Veamos un ejemplo completo:
–Clase padre abstracta
–Clase hija
–Clase ejecutable
La idea de las clases abstractas es que tengamos una clase padre que sirva como plantilla para las clases hijas, en las clases hijas se implementaran los métodos abstractos de la clase padre.
Aunque no puedan crear objetos, si se pueden crear array de objetos de una clase abstracta.
Las clases abstractas tienen una gran ventaja y es que no necesita hacer casting de objetos ni utilizar el operador instanceof.
Te dejo un video para complementar:
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
En conclusion que hace todo el programa amigo no entiendo! ayuda con eso porfa
Simplemente on definicion de clases, si intentas crear una instancia de una clase Empleado no te dejará, como he puesto en el post, es como una plantilla.
Espero que te sea de ayuda.
Una duda, ¿en el constructor sin argumentos de Comercial no habría que usar «super» para llamar al constructor de la clase padre?
Si, tienes razón. Un despiste.
Ya esta modificado. Gracias y un saludo
Excelente ayuda amigo, muy buena explicación espero me puedas ayudar en unas consultas próximas.
Una duda para que le pones protected a las propiedades de la case y luego usa metodos set para asignarle valor a las propiedades si lo puede hacer directamente desde la propiedades ??
Primero muchas gracias, me estas sirviendo mucho, pero al hacer la clase padre abstract me sale error al declarar los constructor, dice que no pueden ser public, aunque los otros métodos public si me deja sin problema, sabes por que es?