2 Clases Abstractas e Interfaces
A nivel conceptual, las clases abstractas e interfaces
permiten definir qué puede hacer un conjunto o familia de
clases relacionadas.
Ejemplo en el contexto de la universidad:
Java: Clases Abstractas e Interfaces
Las “personas” (esto es,
“alumnos”, “profesores” y
“administrativos”)
conocen y retornan su
RUT, nombre, teléfono y
dirección
Persona
Franco GuidiPolanco
Escuela de Ingeniería Industrial
Pontificia Universidad Católica de Valparaíso, Chile
fguidi@ucv.cl
Alumno
Profesor
Administrativo
Actualización: 8 de marzo de 2006
Franco Guidi Polanco
Clases Abstractas
2
Ejemplo de Clase Abstracta
Una clase es declarada abstracta cuando no
es posible crear instancias de ella.
Una clase debe ser declarada abstracta si
posee al menos un métododeclarado
abstracto.
Un método abstracto es aquél que no provee
implementación.
public abstract class Poligono {
int lados;
public int setLados(int l){
lados = l;
}
public abstract double getArea();
...
}
Pablo Picasso, Toro (11)
Una subclase de una clase abstracta
puede ser instanciada (es decir, puede
ser “no abstracta”) sólo si provee
implementación para todos los
métodos abstractos dela superclase.
En caso contrario, debe también ser
declarada abstracta.
Franco Guidi Polanco
07-03-2007
07-03-2007
public class Cuadrado extends Poligono {
int longitud;
public double getArea(){
return longitud*longitud;
}
...
}
3
Franco Guidi Polanco
07-03-2007
Clase abstracta
Polígono
Clase concreta
que extiende la
clase abstracta.
4
Interfaces
Analogía
Una interfaz define un tipode dato.
Contenido de una interfaz:
Nombre y visibilidad
Eventuales otras interfaces
extendidas
Declaraciones de métodos
Constantes (declaradas como
static final)
Destornillador
Modelos de cabezas
De tornillos
Una interfaz no provee:
Variables de instancia o de clase
Implementación para los métodos
Útiles cuando una clase debe usar objetos de distintas clases, pero queoperan de la misma forma (ej. un temporizador para videograbador,
radio, etc.)
Franco Guidi Polanco
07-03-2007
public class Persona implements Despertable{
int estado = DESPIERTO;
public void dormir() {
estado = Despertable.DORMIDO;
}
public void despierta(){
estado = DESPIERTO;
}
...
}
Franco Guidi Polanco
07-03-2007
Interfaces
Clases que implementan
alguna de las interfaces
Tornillos
5Ejemplo de Interfaz
public interface Despertable {
public static final int DORMIDO = 1;
public static final int DESPIERTO = 2;
public void despierta();
}
Clase que debe usar ciertos
objetos
Franco Guidi Polanco
07-03-2007
6
Ejemplo de Interfaz (cont.)
La interfaz
Despertable
public class Alarma {
...
public static void despertar(Despertable d);
d.despierta();
}
}
Una clase que
implementa lainterfaz
Despertable
public class Ejemplo {
public static void main(String[] arg){
Persona p1 = new Persona();
Alarma.despertar(p1);
Despertable p2 = new Persona();
Alarma.despertar(p2);
}
}
7
Franco Guidi Polanco
07-03-2007
La Alarma es
capaz de “despertar”
cualquier objeto
que implemente la
interfaz
Despertable.
8
Uso de Interfaces
Interfaces y excepciones
Una clase puede implementarmúltiples interfaces:
Las excepiones declaradas en los métodos de una
interfaz (cláusula throws) también deben ser
declaradas en los métodos de las clases que
implementan la interfaz.
public class Anfibio implements Terrestre, Acuático { ... }
Una interfaz puede extender otras interfaces.
public interface Anfibio extends Terrestre, Acuático { ... }
Algunos enuncian que el uso de interfacesrepresenta una
forma de enfrentar el problema de la “herencia múltiple” en
Java.
Franco Guidi Polanco
07-03-2007
9
Ejemplo
Franco Guidi Polanco
07-03-2007
10
Ejemplo (cont.)
Clase que accede a las funciones del Aerosub:
El Aerosub (“Viaje al fondo del mar”)
public class Comandante {
public Aerosub vehículo;
public interface Aéreo {
public void despegar();
public void acuatizar();
}...
Regístrate para leer el documento completo.