Java - Clase Abstracta
Concepto
Clases especiales
similares a lasinterfaces
Características
-
Una
clase abstracta
puede o no incluirmétodos abstractos
-
Permite la
implementación
de losmétodos
en laclase abstracta
como si fuera unaclase concreta
siempre que esos métodos no lleven en modificadorabstract
-
Métodos abstractos
no están implementados y lleva el modificadorabstract
-
Tenemos que proporcionar una implementación en la
subclase hija
que la extienda mediante el uso del modificadorextends
-
Métodos abstractos
implementados
por lassubclases
oclases hijas
que heredan de laclase abstracta
-
No permiten el uso del modificador
final
en su declaración//ERROR del compilador → illegal combination of modifiers: abstract and final abstract final void getShow();
-
-
-
Ejemplo básico de un
método abstracto
// Método Abstracto
public abstract void metodoAbstracto();
}
-
Las
clases hijas
quehereden
de laclase abstracta
serán quiénes puedancrear
los objetos -
Pueden tener
métodos concretos
Métodos
con unaimplementación específica
-
Pueden tener
atributos/variables
declase
- Accedidas desde las
subclases hijas
y también pueden ser protegidas mediantemodificadores de acceso
- Accedidas desde las
-
Pueden tener
constructores
- Utilizados para inicializar los
atributos/campos
de laclase
- Utilizados para inicializar los
-
Puede ser
extensión
de otraclase
- Una
clase abstracta
puedeextender
otra clase concreta oclase abstracta
que heredan losatributos
ymétodos
de laclase padre
- Una
-
Una
clase abstracta
puede declarar métodos con el modificadorfinal
- Significa que no se pueden invocar e implementar en sus
subclases
a partir de ella
- Significa que no se pueden invocar e implementar en sus
-
Pueden contener
métodos estáticos
- Pertenecen a la
clase concreta
y no a unobjeto
de laclase abstracta
- Pertenecen a la
-
Pueden ser utilizadas en
polimorfismo
-
Una
clase abstracta
puede ser util enpolimorfismo
ya que lassubclases
pueden sertratadas
comoobjetos
de laclase abstracta
-
Significa que una
variable
detipo clase abstracta
puedehacer referencia
a unobjeto
de una de sussubclases
y pueden utilizarmétodos
de laclase abstracta
enobjetos
de sussubclases
-
Pueden ser
utilizadas
comoclases de utilidad
- Una
clase de utilidad
es la que puede contenermétodos estáticos
útiles para variasclases
- Una
-
-
Las
clases abstractas
es unaclase
que se utiliza como una plantilla para crearsubclases
más específicas- Pueden
implementar
todos losmétodos
heredados de lasinterfaces
- Pueden
-
Una
clase abstracta
puede implementarvarias interfaces
a la vez
public abstract class MiClase implements Interface1, Interface2, Interface3 {
// Aquí va el código de la clase abstracta
}
Estructura básica
-
No permiten
instanciar/crear objetos
desde la propiaclase abstracta
pero si se puedencrear objetos
desde susclases hijas
las cuales descienden de la propiaclase abstracta
-
No se
puedeninstanciar
directamente desde laclase abstracta
pero puede tenermétodos abstractos
ymétodos implementados
-
Cuando una
clase abstracta
es unasubclase
oclase hija
de otraclase abstracta
- La
subclase abstracta
proporciona implementaciones para todos losmétodos abstractos
en suclase principal
- La
Los elementos del tipo abstracto
→ TE DICEN QUE HACER pero NO COMO HACERLO
Esa tarea las realizarán las clases hijas que desciendan de la clase abstracta
// Modificador de clase para convertirla en una clase abstracta
// ↓
public abstract class GraphicObject {
// • Espacio para declara atributos/campos
// • Espacio para declara métodos no abstractos
// Método abstracto
abstract void draw();
}
Atributos : Clase Abstracta
-
Permite
declarar campos/atributos
de instancia-
Permiten el uso de
modificadores
-
public
-
protected
-
private
-
-
Permite
atributos
del tipoCONSTANTES
-
Variables definidas
con el modificadorstatic final
-
Esta constante
nunca modificara su valor original
en la ejecución del programa
-
-
public static final int PI = 3.14159265358979323846;
Métodos : Clase Abstracta
-
Permite el uso de los
modificadores
-
public
-
protected
-
private
-
-
Pueden contener
métodos de instancia
con o sin implementación-
Métodos
sin implementación
-
Se utilizan cuando
-
No sabemos
laimplementación
que necesitara elmétodo
conrespeto
a su desempeño dentro del programa -
Se
implementará
más adelante laoperación/acción
que tenga que realizar losmétodos abstractos
en las clases hijas que hereden de la clase abstracta-
Las clases hijas tanto
(abstractas como especificas)
serán quienes implementen lo que aún se desconoce que deben de hacer elmétodo
dentro del programaabstract void makeSound();
-
-
-
-
Métodos
con implementación
public void (int newX , int newY){ // ... Implementación del método ... }
-
-
Pueden contener
métodos de clase
con o sin implementaciónabstract static void makeSound(String sound);
-
Sabemos que tarea/acciones tienen
que realizar
- Por ello se implementan en la misma
clase abstracta
para que lasclases hijas
que hereden estaclase abstracta
puedan invocarla e implementarla
- Por ello se implementan en la misma
-
Ejemplo : Clase Abstracta
/**
* Clase Básica Abstracta
*/
public abstract class ClaseAbstractaEjemplo implements InterfaceEjemplo{
. . .
}
Modificador abstract
-
Si una
clase
contiene unmétodo abstracto
se le añade el modificadorabstract
para convertirla en unaclase abstracta
-
Cuando declaremos un
método abstracto
no lo implementaremos- Solo declararemos la cabecera con el punto y coma al final
-
-
Una clase es
abstracta
necesita serextendida
por lo que no puede ser tener el modificador final-
Utilizar el modificador
final
No permite que sea extendida
por lasclases hijas
de esta lo cual pierde la posibilidad de la herencia e implementación
-
-
Cuando una
clase abstracta
es una subclases proporcionan implementaciones para todos losmétodos abstractos
en suclase principal
sino es así la subclase se declaraabstracta
Ejemplo : Métodos Abstractos
public abstract int getValor();
public abstract void moveTo(double deltaX , double deltaY);
-
Si una
clase hija
hereda de unaclase abstracta
se tiene que indicar con la palabra claveextends
- Esta clase heredará todos los atributos y métodos tanto implementados como sin implementar de la clase abstracta
/**
* Clase Básica Abstracta
*/
public class ClaseHija extends ClaseAbstractaEjemplo {
}
- Solo se puede heredar de una clase Padre o abstracta y se puede implementar de tantas interfaces se necesite
/**
* Clase Básica Abstracta
*/
public class ClaseHija extends ClaseAbstractaEjemplo implements InterfaceEjemplo1 , InterfaceEjemplo2 {
// . . . Implementación de la clase Hija
}
Implementar Clase Concreta y Varias Interfaces a la vez desde la Clase Abstracta
-
Puede extender
"extend"
de una solaclase
seaclase abstracta
oclase concreta
-
No permiten la herencia multiple
- Sólo puede tener una
superclase directa
- Sólo puede tener una
-
Ejemplo
public interface Interface1 {
void metodo1();
}
public interface Interface2 {
void metodo2();
}
public abstract class MiClase implements Interface1, Interface2 {
// La clase abstracta debe implementar todos los métodos declarados en las interfaces
public void metodo1() {
// Código de la implementación del método 1
}
public void metodo2() {
// Código de la implementación del método 2
}
}
// Una Clase Concreta que extiende de MiClase debe implementar cualquier método abstracto adicional
public class ClaseConcreta extends MiClase {
public void metodo3() {
// Código de la implementación del método 3
}
}
Explicación
-
MiClase
es unaclase abstracta
que implementa lasinterfaces Interface1
yInterface2
- Debe proporcionar una
implementación
de los métodosmetodo1
ymetodo2
- Debe proporcionar una
-
ClaseConcreta
es unaclase concreta
que extiende deMiClase
-
Como
MiClase
es unaclase abstracta
`ClaseConcreta
debeimplementar
cualquiermétodo abstracto
adicional que no esté implementado enMiClase
-
ClaseConcreta
implementa el métodometodo3
Resumen
-
Las
clases abstractas
implementan algunosmetodos
para lasclases hijas
osubclases
para que puedan invocarlos y usarlos-
Crean sus propios
metodos abstractos
sin implementaciónpublic abstract int getNumber();
-
-
Las
clases abstractas
son una especie defabricas de estructuras de métodos
algunos con o sin implementación-
Otras clases descendientes
subclases
las extiende mediante la implementación para darle unafuncionalidad especifica
según la necesidad o requisitos del programa- Como una
plantilla
para crearsubclases
más específicas
- Como una
-
Contiene
atributos
,constructores
,extender
otrasclases hijas
osubclases
-
Puede declarar los
métodos
comofinal
siempre que no seanabstractos
-
Contener
métodos estáticos
para ser utilizados en elpolimorfismo
-
Puede ser utilizada como
interface
que contiene métodos con y sin implementar -
Se utiliza como
clase de utilidad
-
Deja un comentario