Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clases cuya descripcin es incompleta. Una clase abstracta declara mtodos, pero no tiene que implementarlos.
No proporcionan la implementacin de todos sus mtodos Los mtodos no implementados se declaran como abstract Una clase con un mtodo abstracto debe declararse como clase abstracta Pero una clase puede declararse como abstracta aunque no tenga ningn mtodo abstracto
Clases abstractas
Forma xpos ypos color ... dibuja setColor ...
{abstract}
Clases abstractas
public abstract class Forma { private int xpos, ypos; private Color color; // ... public abstract void dibuja(); public void setColor(Color c){ /*...*/ }; } public class Circle extends Forma{ private int radio; // ... public void dibuja(){ /*...*/ }; public void setRadio(int){/*...*/}; } public class Rectangle extends Forma{ private int altura, anchura; // ... public void dibuja(){ /*...*/ }; public void setAltura(int){/*...*/}; }
3
Otras
Circulo radio ... setRadio ... Rectangulo altura anchura ... setAltura ...
dibuja un rectngulo
Clases abstractas
Las subclases de una clase abstracta deben: Sobreescribir todos los mtodos 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 mtodos no abstractos. No se pueden definir constructores abstractos o mtodos estticos abstractos.
Figura
Interfaces
Slo declaran comportamiento
Se utiliza la palabra clave interface Por defecto todos sus mtodos son pblicos y abstractos
No implementan el comportamiento
} }
} }
Interfaces
Permite simular algunos aspectos de la herencia mltiple
Define un tipo de datos Posibilita el enlace dinmico
Declaracin de interfaces
Sintaxis
interface NombreInterfaz { interface NombreInterfaz { tipo static final NOMBRECONSTANTE1 = valor; tipo static final NOMBRECONSTANTE1 = valor; ... ... public tipoDevuelto nombreMetodo1(listaParmetros); public tipoDevuelto nombreMetodo1(listaParmetros); ... ... } } class NombreClase implements NombreInterfaz1 class NombreClase implements NombreInterfaz1 clase Implementacin del interfaz en una{ [, NombreInterfaz2 ..] [, NombreInterfaz2 ..] { // clase puede implementar varios de la clase mtodos interfaces Unadeclaracin atributos yy mtodos de la clase // declaracin atributos ... ... } }
9 Tema 9. Clases abstractas e interfaces. LPS 2005. 10
Si la clase no proporciona la implementacin para todos los mtodos del interfaz debe ser declarada como abstracta
Tema 9. Clases abstractas e interfaces. LPS 2005.
interfaces
Programador es un Asalariado
Ejemplo de interfaz
public interface Nombrable { public interface Nombrable { static final boolean CIERTO = true; static final boolean CIERTO = true; public void mostrarNombre(); public void mostrarNombre(); } } public class Elemento implements Nombrable { public class Elemento implements Nombrable { String nombre; String nombre; public Elemento(String nom) { public Elemento(String nom) { nombre = nom; } nombre = nom; } // obligatorio implementar mtodo mostrarNombre // obligatorio implementar mtodo mostrarNombre public void mostrarNombre(){ public void mostrarNombre(){ System.out.println("Nombre: "+nombre); System.out.println("Nombre: "+nombre); if (CIERTO) if (CIERTO) System.out.println("Constante CIERTO "); System.out.println("Constante CIERTO "); Tema 9. Clases abstractas e interfaces. LPS 2005. 12 }} }}
ite erm ep s
11
Ejemplo de interfaces
{interface}
Humano Actor Canino
} }
14
Ejemplo de interfaces
interface Actor { void actua(); }
Extensin de interfaces
Se puede definir un interface que especialice a otro interface mediante
sin cuerpo
extends
public class Persona extends Humaon implements Actor { public void actua(){ /*...*/}; //... } public class Perro extends Canino implements Actor { public void actua(){ /*...*/}; //... } Tema 9. Clases abstractas e
interfaces. LPS 2005.
15
16
Extensin de interfaces
No obstante un interface puede extender a varios interfaces a la vez
Aqu la herencia mltiple no plantea problemas porque no se hereda cdigo
interface ElementoOrdenado extends interface ElementoOrdenado extends Comparable, Cloneable, java.io.Serializable { Comparable, Cloneable, java.io.Serializable { // miembros y mtodos propios del interfaz // miembros y mtodos propios del interfaz //ElementoOrdenado //ElementoOrdenado ..... ..... } }
Tema 9. Clases abstractas e interfaces. LPS 2005. 17
Rsumen de interfaces
Las interfaces sirven para:
Declarar mtodos que sern implementados por una o ms clases. Determinar la interface de programacin de un objeto, sin mostrar el cuerpo de la clase. Capturar similitudes entre clases no relacionadas, sin forzar una relacin entre ellas. Describir objetos "tipo-funcin", que podrn ser utilizados como argumentos al invocar mtodos sobre objetos.
Tema 9. Clases abstractas e interfaces. LPS 2005. 18
Rsumen de interfaces
Tipo herencia instanciable implementa datos
19