2. Clases Abstractas e Interfaces
Clases Abstractas
Una clases Abstracta…..
es una clase que no se puede instanciar
se usa únicamente para definir sub clases
¿Cuándo es una clase Abstracta ?
En cuanto uno de sus métodos no tiene implementación (En Java
el método abstracto se etiqueta con la palabra reservada abstract )
¿Cuándo se utiliza clases abstractas?
Cuando se desea definir una abstracción que englobe objetos de
Distintos tipos y queremos hacer uso del polimorfismo
3. „ Las subclases de una clase abstracta deben:
Š Sobrescribir todos los métodos abstractos de
la superclase, o bien
Š Ser declaradas como clases abstractas
„ Una clase abstracta no puede instanciarse
Š No se pueden crear objetos de una clase
Abstracta
„ Una clase abstracta puede incluir variables y
métodos no abstractos.
„ No se pueden definir constructores abstractos o
métodos estáticos abstractos.
4. Ejemplo:
public abstract class Forma {
private int xpos, ypos;
private Color color;
// ... los métodos
public abstract void dibuja(); abstractos no
public void setColor(Color c){ /*...*/ }; tienen cuerpo
}
public class Circle extends Forma{
private int radio;
// ...
public void dibuja(){ /*...*/ };
public void setRadio(int){/*...*/};
}
dibuja un
círculo
public class Rectangle extends Forma{
private int altura, anchura;
// ...
public void dibuja(){ /*...*/ };
public void setAltura(int){/*...*/};
}
5. Interfaces
En java, las interfaces se declaran con la palabra reservada
interface de manera similar como se declaran las clases abstractas.
En la declaración de una interfaz, lo único que puede aparecer son
declaraciones de los métodos (su nombre y asignatura, sin su implementación)
Una Interfaz no encapsula datos, solo define cuales son los métodos
que han de implementar los objetos de aquellas clases que
Implementen la interfaz.
En java, para indicar que una clase implementa una interfaz se
utiliza la palabra reservada implements.
La clase debe entonces implementar todos los métodos definidos
por la interfaz o declararse, a su vez, como una clase abstracta
6. Sólo declaran comportamiento
„ Por defecto todos sus métodos son
públicos y abstractos
Permite simular algunos aspectos de la
herencia múltiple
„ Define un tipo de datos
„ Posibilita el enlace dinámico
Otras clases pueden implementar un interfaz
„
Cualquier clase que implemente un interfaz debe
definir todos los métodos de dicho interfaz
ŠDebe proporcionar la implementación de dichos métodos
„
Si la clase no proporciona la implementación para
todos los métodos del interfaz debe ser declarada
como abstracta
7. Declaración de interfaces
Sintaxis
Implementación del interfaz en una clase
„ Una clase puede implementar varios interfaces
interface NombreInterfaz {
tipo static final NOMBRECONSTANTE1 = valor;
public tipoDevuelto nombreMetodo1(listaParámetros);
}
interface NombreInterfaz {
tipo static final NOMBRECONSTANTE1 = valor;
public tipoDevuelto nombreMetodo1(listaParámetros);
}
class NombreClase implements NombreInterfaz1
[, NombreInterfaz2 ..] {
// declaración atributos y métodos de la clase
}
class NombreClase implements NombreInterfaz1
[, NombreInterfaz2 ..] {
// declaración atributos y métodos de la clase
}
8. Ejemplo de Interfaz
public interface Nombrable {
static final boolean CIERTO = true;
public void mostrarNombre();
}
public class Elemento implements Nombrable {
String nombre;
public Elemento(String nom) {
nombre = nom; }
// obligatorio implementar método mostrarNombre
public void mostrarNombre(){
System.out.println("Nombre: "+nombre);
if (CIERTO)
System.out.println("Constante CIERTO ");
}
}