Clases abstractas en JAVA
La programación orientada objetos pareciera que estuviera formada por un sin fin de conceptos que al principio son difíciles de entender pero que son importantes tenerlos claro para poder aprovechar el máximo las ventajas que nos ofrece la programación POO , las clases abstractas forman parte de ese conjunto, hoy hablare un poco de que son estas clases y con un pequeño ejemplo muy familiar explicare para que se usan las mismas.
Una clase abstracta es una clase que no se puede instanciar y la usaremos para definir subclases , lo que conocemos como herencia, un ejemplo de esto seria un diagrama como el siguiente:
Con este ejemplo en nuestro programa vamos a poder instanciar Vertebrados e Invertebrados pero no vamos a poder instanciar objectos de tipo, puesto que esta sera la clase abstracta de nuestro proyecto.
Ahora bien para nosotros poder declarar una clase abstracta en JAVA usaremos la palabra reservada abstract de la siguiente forma public abstract class NombreDeLaClase.
Si una clase no la declaráramos usando la palabra abstract se cataloga como clase concreta y por lo tanto podemos crear instancia de esta clase, por esta razón es importante que se coloque esta palabra. Las clases abstractas simplemente van a servir como superclase a otras clases, como lo podemos observar en la imagen del diagrama.
Para que una clase sea considerada abstracta en JAVA aparte de tener la palabra reservada abstract debe contener al menos un método abstracto y para que un método se considere abstracto debe de cumplir con lo siguiente:
- No va contener código, es decir no va a poseer cuerpo , sólo constara de de su declaración con paréntesis.
- Su declaración termina con un punto y coma.
- Sólo puede existir dentro de una clase abstracta.
- Los métodos abstractos serán sobrescritos en las subclases. Si una subclase no implementa un método abstracto de la superclase tiene un método no ejecutable, lo que la obligaría a ser una subclase abstracta.
Es importante saber que una clase puede ser declarada como abstracta y no contener métodos abstractos. Esto puede ser útil para casos donde queramos que las subclases compartan métodos que tengan el mismo comportamiento.
Asi quedara nuestra clase abstracta animal:
Así quedara la clase vertebrado que extiende de la clase Animal:
Si nos fijamos únicamente estamos implementando el método TipoDeAnimal, el método comer como es una método abstracto de la clase Animal, nos vemos en la obligación de tener que declararlo y abrirle sus llaves correspondiente, pero no tenemos que colocar algún tipo de código, todos los métodos abstractos que declaramos en la clase abstracta Animal vamos a tener que declararlo de manera obligatoria en la clase que extienda de ella. Sin embargo los métodos de nuestra clase Animal que no sean abstracto como es el caso de dormir no se tendrán que declarar en la clase Vertebrado, pero si se quisiera modificar dicho método por alguna razón en la clase Vertebrado se podría hacer sin ningún tipo de problema.
Las clases abstractas la podemos usar cuando queremos englobar objectos de distintos tipos y queramos usar el poliformismo.
Esto fue todo por esta entrada, espero que le sirva de ayuda...
System.out.println("Bye World");
Comentarios
Publicar un comentario