Está en la página 1de 7

https://panuanunaki.wixsite.

com/p4anu

Clases abstractas y métodos abstractos // y miembros abstractos

Intro:

Hasta el momento hemos visto la sobreescritura de métodos a través de la herencia y las interfaces. Básicamente la
sobreescritura de métodos es el POLIMORFISMO.

En el caso de las interfaces, a veces no es necesario implementar todos los métodos. Y, en la herencia, las clases podrían
NO necesitar heredar la implementación de un método.

UNA CLASE ABSTRACTA ES UNA COMBINACIÓN ENTRE INTERFACES Y HERENCIAS

{No se puede instanciar ni crear objetos de una clase abstracta}

Sintaxis básica de una clase abstracta:


https://panuanunaki.wixsite.com/p4anu

En una clase abstracta no se implementan todos los métodos, además, en una clase abstracta no es necesario crear
instancias (objetos).

//excepto los métodos declarados


como “abstract”. Esos si se implementan, y obligatoriamente.

//Supongamos la siguiente sintaxis

//” Figura” es una clase abstracta. La clase “Triangulo”


hereda de la clase “Figura” (es una sintaxis de herencia).

INSTANCIAR UNA CLASE ABSTRACTA CON UNA CLASE HIJO: ↓↓ (miembros abstractos)

Las clases abstractas y los métodos abstractos, nos resuelven no tener que instanciar cada vez los elementos de las
clases padres. Es decir, permite una invocación más económica en términos de código.

Las clases abstractas, por defecto, siempre serán clases padre. Y, de las clases abstractas, nunca se pueden crear
objetos.

//veamos algo de métodos abstractos:

SINTAXIS DE UN MÉTODO ABSTRACTO DENTRO DE UNA CLASE ABSTRACTA:

“Figura” es la clase, y “dibujate” es el método. Ambos son elementos declarados como abstractos.

A partir de esta declaración de elementos. Cada vez que se invoque (o herede) una clase abstracta, esta debe indicarse
junto a todo método que, en su interior, fuese indicado como abstracto tambien (pero los que no se indiquen así no). No
se pude no llamar al método (o los métodos) abtracto(s) de una clase abstracta.
https://panuanunaki.wixsite.com/p4anu

En escritura de código en IntellijiIDEA

En un proyecto tenemos a User que es una clase que ha sido declarada como abstracta:

Dentro de la misma clase, que ya contiene otros elementos y sintaxis, vamos a declarar un método abstracto básico:

Luego vamos a la clase Doctor, que es subclase de User, y vemos algo particular…
https://panuanunaki.wixsite.com/p4anu

//Ahora la IA de IntellijiIDEA señala un nuevo error de sintaxis en la invocación de la superclase User: sucede que en
User se ha declarado un nuevo método abstracto (figura anterior), y es obligatorio incluirlo en el scope (bloque de
acción/instrucción) de la herencia.

Entonces implementamos el método utilizando el menú desplegable:


https://panuanunaki.wixsite.com/p4anu

//el mismo método de la misma superclase, puede ser invocado (llamado) en varias subclases, pero cargado de distintas
instrucciones en su scope. Veamos tres ejemplos, dada la superclase User…

1) En la subclase de pacientes (Patient.java):


https://panuanunaki.wixsite.com/p4anu

2) En la subclase de enfermera/nurse (Nurse.java):

3) En la subclase Doctor (Doctor.java):


https://panuanunaki.wixsite.com/p4anu

Tres casos, en tres subclases diferentes, del llamado al mismo método abstracto, pero con diferente carga de
instrucciones en el scope de cada caso.

También podría gustarte