Una clase abstracta es una clase Java con algunas peculiaridades:
- Su objetivo es heredar a otras clases.
- Tener métodos abstractos (los que no tienen implementación, solo la firma) y
- No puede ser instanciada, pues, como se dijo arriba, su objetivo es que otras clases hereden de ella.
La herencia nos permite ahorrar escribir código de más y la abstracción es su punto fuerte. Una clase abstracta es similar a una interface, pero puede tener métodos implementados.
La palabra abstract nos dice que la clase es abstracta.
package com.city.java; public abstract class Abstracta extends Object{ public abstract void imprimir(); }
//Dentro de un método main Abstracta abstracta = new Abstracta(); //Esto no compilará
Es indispensable crear una clase hija (o subclase) que herede de la clase Abstracta. Abajo la clase X hereda de la clase Abstracta.
package com.city.java; public class X implements Abstracta { @override public void imprimir(){ System.out.println("Hacer X"); } }
Cada clase hija(subclase) puede implementar los métodos heredados como se requiera.
package com.city.java; public class Y implements Abstracta { @override public void imprimir(){ System.out.println("Hacer Y"); } }
Estas clases hijas tienen un "contrato que debe cumplir". Deben implementar por obligación los métodos heredados.
La instanciación.
Al instanciar debemos ser cuidadosos de no pretender instanciar directamente una clase abstracta. Debemos instanciar las clases hijas.
/*Esto es correcto*/ Abstracta my_x = new X(); Abstracta my_y = new Y(); /*Esto no es correcto*/ Abstracta a = new Abstracta(); X x = new Abstracta(); Y y = new Abstracta();
Links:
https://comunidadcityjavamex.blogspot.com/2019/03/java-tip-8-interfaces.html
Comentarios
Publicar un comentario