Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Declaracin de interfaces
Sintaxis
interface NombreInterfaz NombreInterfaz { { interface tipo static static final final NOMBRECONSTANTE1 NOMBRECONSTANTE1 = = valor; valor; tipo ... ... public tipoDevuelto nombreMetodo1(listaParmetros); public tipoDevuelto nombreMetodo1(listaParmetros); ... ... } } class NombreClase implements implements NombreInterfaz1 class NombreClase NombreInterfaz1 Implementacin del interfaz en una clase [, NombreInterfaz2 NombreInterfaz2 ..] ..] { { [, // declaracin atributos y mtodos de la clase clase Una clase puede implementar varios interfaces // declaracin atributos y mtodos de la ... ... } }
9 Tema 9. Clases abstractas e interfaces. LPS 2005. 10
Define un tipo de datos Posibilita el enlace dinmico Cualquier clase que implemente un interfaz debe definir todos los mtodos de dicho interfaz
Debe proporcionar la implementacin de dichos mtodos
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 interface Nombrable Nombrable { { public static final final boolean boolean CIERTO CIERTO = = true; true; static public void void mostrarNombre(); mostrarNombre(); public } } public class class Elemento Elemento implements implements Nombrable Nombrable { { public String nombre; nombre; String public Elemento(String Elemento(String nom) nom) { { public nombre = = nom; nom; } } nombre // obligatorio obligatorio implementar implementar mtodo mtodo mostrarNombre mostrarNombre // public void void mostrarNombre(){ mostrarNombre(){ public System.out.println("Nombre: "+nombre); "+nombre); System.out.println("Nombre: if (CIERTO) (CIERTO) if System.out.println("Constante CIERTO "); "); System.out.println("Constante CIERTO Tema 9. Clases abstractas e interfaces. LPS 2005. 12 }} }}
ite rm pe e 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
Rsumen de interfaces
Las interfaces sirven para:
interface ElementoOrdenado ElementoOrdenado extends extends interface Comparable, Cloneable, Cloneable, java.io.Serializable java.io.Serializable { { Comparable, // miembros miembros y y mtodos mtodos propios propios del del interfaz interfaz // //ElementoOrdenado //ElementoOrdenado ..... ..... } }
Tema 9. Clases abstractas e interfaces. LPS 2005. 17
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