Este documento explica las clases abstractas e interfaces en Java. Las clases abstractas sirven como plantillas para subclases y pueden contener métodos abstractos sin cuerpo. Las interfaces definen conjuntos de métodos que clases pueden implementar para interactuar entre sí. Mientras que las clases abstractas permiten actualizaciones automáticas a subclases, las interfaces no pueden modificarse una vez creadas.
2. Clases abstractas
Cuando una clase se diseña para ser genérica,
es casi seguro que no necesitaremos crear
objetos de ella; la razón de su existencia es
proporcionar los atributos y comportamientos
que serán compartidos a sus subclases. A esta
clase se la denomina clase abstracta.
• Se la defina calificándola explícitamente
abstracta. Así:
Public abstract class Ccuenta{
//Cuerpo de la clase
}
3. Una clase abstracta puede contener el
mismo tipo de miembros que una
clase que no lo sea, y además puede
contener métodos abstractos, que una
clase no abstracta no puede contener.
Un método abstracto no tiene cuerpo;
la idea es proporcionar métodos que
deban ser redefinidos en las
subclases , con la intención de
adaptarlos a las necesidades
particulares de éstas.
4. Reglas de uso:
Una clase abstracta solo puede ser usada
como clase base para otras clases, pero no
puede ser instanciada para crear un objeto.
Una clase abstracta no puede ser utilizada
como argumento o como retorno de una
función.
Si puede declararse punteros-a-clase
abstracta.
Se permiten referencias-a-clase abstracta,
suponiendo que el objeto temporal no es
necesario en la inicialización.
5. Interfaces
Es un dispositivo que permite
interactuar a objetos no relacionados
entre sí. Las interfaces Java en
realidad definen un conjunto de
mensajes que se puede aplicar a
muchas clases de objetos, a los que
cada una de ellas debe responder de
forma adecuada. Por ello, a una
interfaz también se le da el nombre de
protocolo.
6. Definir una interfaz
◦ [public] interface nombre_interfaz extends
superinterfaces
◦ {
Cuerpo de la intefaz
◦ }
Para crear una interface, se utiliza la palabra clave
interface en lugar de class. La interface puede
definirse public o sin modificador de acceso, y
tiene el mismo significado que para las clases.
Todos los métodos que declara una interface son
siempre public.
La palabra extends significa que se esta
definiendo una interfaz que es una extension de
otras.
7. Clase abstracta vs Interfaz
Si sabe de antemano que va a crear
varias versiones del componente, cree
una clase abstracta. Las clases
abstractas proporcionan un medio fácil y
sencillo para crear versiones de los
componentes. Al actualiza la clase base,
todas las clases heredadas se actualizan
automáticamente con el cambio. Por el
contrario, las interfaces no se pueden
cambiar una vez creadas. Si necesita
una nueva versión de una interfaz,
deberá crear una totalmente nueva.