SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
1
Java Arrays y Cadenas 1
Clases abstractas e interfaces
Java Arrays y Cadenas 2
Clases abstractas
Clases cuya descripción es incompleta. Una
clase abstracta declara métodos, pero no
tiene que implementarlos.
n No proporcionan la implementación de todos sus
métodos
w Los métodos no implementados se declaran
como abstract
n Una clase con un método abstracto debe
declararse como clase abstracta
w Pero una clase puede declararse como
abstracta aunque no tenga ningún método
abstracto
Java Arrays y Cadenas 3
Clases abstractas
Otras
{abstract}
Forma
xpos
ypos
color
...
dibuja
setColor
...
Circulo
radio
...
setRadio
...
Rectangulo
altura
anchura
...
setAltura
...
Java Arrays y Cadenas 4
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){/*...*/};
}
dibuja un
círculo
public class Rectangle extends Forma{
private int altura, anchura;
// ...
public void dibuja(){ /*...*/ };
public void setAltura(int){/*...*/};
}
dibuja un
rectángulo
los métodos
abstactos no
tienen
cuerpo
Java Arrays y Cadenas 5
Clases abstractas
n Las subclases de una clase abstracta deben:
w Sobreescribir todos los métodos abstractos de
la superclase, o bien
w Ser declaradas como clases abstractas
n Una clase abstracta no puede instanciarse
w No se pueden crear objetos de una clase
abstracta
n Una clase abstracta puede incluir variables y
métodos no abstractos.
n No se pueden definir constructores abstractos o
métodos estáticos abstractos.
Java Arrays y Cadenas 6
Ejemplo clase abstracta
public abstract class Figura {
int x, y;
public void mostrarOrigen() {
System.out.println("x= "+x+" y= "+y);}
public abstract double area(); // No tiene implementación
public abstract double mostrarNombre();
}
public class Triangulo extends Figura {
protected int base, altura;
public Triangulo (int ba, int al) { base=ba; altura=al; }
public double area() { return base*altura/2; }
public void mostrarNombre() { System.out.println(“triangulo”); }
}
public class Cuadrado extends Figura {
protected int lado;
public Cuadrado (int lado) { this.lado=lado; }
public double area() { return lado*lado; }
public void mostrarNombre() { System.out.println(“cuadrado”);}}
Figura
Triangulo
Cuadrado
2
Java Arrays y Cadenas 7
Prueba clase abstracta
public class PruebaClaseAbstracta {
public static void main(String args[]) {
Figura fig;
Triangulo tri;
Cuadrado cua;
fig = new Figura(); // error no se puede
//instanciar una clase abstracta
tri = new Triangulo(4,3);
tri.mostrarOrigen ();
tri.mostrarNombre ();
fig = tri;
fig.mostrarNombre ();
System.out.println("Area triangulo: "+fig.area());
cua = new Cuadrado(5);
fig = cua;
System.out.println("Area cuadrado: "+fig.area());
}
}
public class PruebaClaseAbstracta {
public static void main(String args[]) {
Figura fig;
Triangulo tri;
Cuadrado cua;
fig = new Figura(); // error no se puede
//instanciar una clase abstracta
tri = new Triangulo(4,3);
tri.mostrarOrigen ();
tri.mostrarNombre ();
fig = tri;
fig.mostrarNombre ();
System.out.println("Area triangulo: "+fig.area());
cua = new Cuadrado(5);
fig = cua;
System.out.println("Area cuadrado: "+fig.area());
}
}
Java Arrays y Cadenas 8
Interfaces
Sólo declaran comportamiento
n Se utiliza la palabra clave interface
n Por defecto todos sus métodos son
públicos y abstractos
w No implementan el comportamiento
n Por defecto todos sus atributos son
públicos, constantes y de clase
w Por legibilidad normalmente los declaramos
static y final
Java Arrays y Cadenas 9
Interfaces
Permite simular algunos aspectos de la
herencia múltiple
n Define un tipo de datos
n Posibilita el enlace dinámico
Otras clases pueden implementar un interfaz
n Cualquier clase que implemente un interfaz debe
definir todos los métodos de dicho interfaz
w Debe proporcionar la implementación de dichos métodos
n Si la clase no proporciona la implementación para
todos los métodos del interfaz debe ser declarada
como abstracta
Java Arrays y Cadenas 10
Declaración de interfaces
Sintaxis
Implementación del interfaz en una clase
n 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
…….….….
}
Java Arrays y Cadenas 11
interfaces
Payable p = new Programmer();
sepermite
Asalariado
Empelado
implements
Programador
extends
Programador es un Asalariado
Java Arrays y Cadenas 12
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 ");
}}
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 ");
}}
3
Java Arrays y Cadenas 13
Uso del interfaz con enlace
dinámico
public class PruebaInterfaz {
public static void main(String args[]) {
Elemento elem;
Nombrable inter;
elem = new Elemento(“Luis");
elem.mostrarNombre();
// una referencia a interfaz puede
//utilizarse con una instancia de
// una clase que lo implemente
inter = elem;
inter.mostrarNombre(); }
}
public class PruebaInterfaz {
public static void main(String args[]) {
Elemento elem;
Nombrable inter;
elem = new Elemento(“Luis");
elem.mostrarNombre();
// una referencia a interfaz puede
//utilizarse con una instancia de
// una clase que lo implemente
inter = elem;
inter.mostrarNombre(); }
} Java Arrays y Cadenas 14
Ejemplo de interfaces
Actor
Perro
...
actua()
...
Canino
{interface}
Person
...
act()
...
Persona
...
actua()
...
Humano
Java Arrays y Cadenas 15
Ejemplo de interfaces
interface Actor
{
void actua();
}
public class Persona extends Humaon implements
Actor {
public void actua(){ /*...*/};
//...
}
public class Perro extends Canino implements
Actor {
public void actua(){ /*...*/};
//...
}
sin cuerpo
Java Arrays y Cadenas 16
Extensión de interfaces
Se puede definir un interface que
especialice a otro interface mediante
extends
n Es similar a la herencia de clases
Java Arrays y Cadenas 17
Extensión de interfaces
No obstante un interface puede
extender a varios interfaces a la vez
n Aquí la herencia múltiple no plantea
problemas porque no se hereda código
interface ElementoOrdenado extends
Comparable, Cloneable, java.io.Serializable {
// miembros y métodos propios del interfaz
//ElementoOrdenado
.....
}
interface ElementoOrdenado extends
Comparable, Cloneable, java.io.Serializable {
// miembros y métodos propios del interfaz
//ElementoOrdenado
.....
}
Java Arrays y Cadenas 18
Résumen de interfaces
Las interfaces sirven para:
n Declarar métodos que serán implementados por
una o más clases.
n Determinar la interfacede programación de un
objeto, sin mostrar el cuerpo de la clase.
n Capturar similitudes entre clases no relacionadas,
sin forzar una relación entre ellas.
n Describir objetos "tipo-función", que podrán ser
utilizados como argumentos al invocar métodos
sobre objetos.
4
Java Arrays y Cadenas 19
Résumen de interfaces
Tipo
herencia
instanciable
implementa
datos
no
extends
(simple)
Se
permiten
metodos
yes
extends
(simple)
InterfaceAbstract
Class
algún método
Class
no se
permiten
nada
no
implements
(multiple)
Se
permiten

Weitere ähnliche Inhalte

Was ist angesagt? (17)

Clases abstractas interfaces
Clases abstractas interfacesClases abstractas interfaces
Clases abstractas interfaces
 
Metodos en java
Metodos en javaMetodos en java
Metodos en java
 
MéTodos En Java
MéTodos En JavaMéTodos En Java
MéTodos En Java
 
Introducción a scala
Introducción a scalaIntroducción a scala
Introducción a scala
 
Programación java1
Programación java1Programación java1
Programación java1
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfaces
 
Unidad 2 Sintaxis en java
Unidad 2 Sintaxis en javaUnidad 2 Sintaxis en java
Unidad 2 Sintaxis en java
 
Clases abstractas e interfaces en java
Clases abstractas e interfaces en javaClases abstractas e interfaces en java
Clases abstractas e interfaces en java
 
8. técnicas de escritura de códigos
8. técnicas de escritura de códigos8. técnicas de escritura de códigos
8. técnicas de escritura de códigos
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Programación 1: modularización
Programación 1: modularizaciónProgramación 1: modularización
Programación 1: modularización
 
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIASUnidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIAS
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala
 

Andere mochten auch

Andere mochten auch (15)

Leccion 14 Java
Leccion 14 JavaLeccion 14 Java
Leccion 14 Java
 
Java
JavaJava
Java
 
Leccion 5 Java
Leccion 5 JavaLeccion 5 Java
Leccion 5 Java
 
Arreglos en Java
Arreglos en JavaArreglos en Java
Arreglos en Java
 
Vectores, array y sus métodos
Vectores, array y sus métodosVectores, array y sus métodos
Vectores, array y sus métodos
 
15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas15 Curso de POO en java - estructuras repetitivas
15 Curso de POO en java - estructuras repetitivas
 
Arreglos Java
Arreglos JavaArreglos Java
Arreglos Java
 
18 Curso POO en java - contenedores
18 Curso POO en java - contenedores18 Curso POO en java - contenedores
18 Curso POO en java - contenedores
 
16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales
 
Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeans
 
Arrays Bidimensionales y Multidimensionales - Carlos Correa
Arrays Bidimensionales y Multidimensionales - Carlos CorreaArrays Bidimensionales y Multidimensionales - Carlos Correa
Arrays Bidimensionales y Multidimensionales - Carlos Correa
 
Ejercicios de vectores o arrays
Ejercicios de vectores o arraysEjercicios de vectores o arrays
Ejercicios de vectores o arrays
 
17 arreglos bidimensionales java
17 arreglos bidimensionales java17 arreglos bidimensionales java
17 arreglos bidimensionales java
 
Array list en java, con ejemplos jarroba
Array list en java, con ejemplos   jarrobaArray list en java, con ejemplos   jarroba
Array list en java, con ejemplos jarroba
 
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matricesArreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
 

Ähnlich wie Tema 10 clase abstractas e interfaz

Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfacesEduardo Lapo
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Kositha Jimhiz G
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetosBelenMonse
 
Programando en java
Programando en javaProgramando en java
Programando en javajulianbm60
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02Krizztiina Pacheko
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 
Clases Abstractas Pc
Clases Abstractas PcClases Abstractas Pc
Clases Abstractas Pcguest28ee92
 
instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajojorpical
 
Clase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpooClase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpoojorg_marq
 
Java 8 introducción a expresiones lambdas y api stream
Java 8  introducción a expresiones lambdas y api streamJava 8  introducción a expresiones lambdas y api stream
Java 8 introducción a expresiones lambdas y api streamEudris Cabrera
 

Ähnlich wie Tema 10 clase abstractas e interfaz (20)

Clases abstractas
Clases abstractasClases abstractas
Clases abstractas
 
Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfaces
 
Clases abs e interfaces
Clases abs e interfacesClases abs e interfaces
Clases abs e interfaces
 
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetos
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Benalcazar esteban
Benalcazar estebanBenalcazar esteban
Benalcazar esteban
 
Java
JavaJava
Java
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
Clase 4 java 2011
Clase 4 java 2011Clase 4 java 2011
Clase 4 java 2011
 
Tema2
Tema2Tema2
Tema2
 
Clases Abstractas Pc
Clases Abstractas PcClases Abstractas Pc
Clases Abstractas Pc
 
interfaces.pdf
interfaces.pdfinterfaces.pdf
interfaces.pdf
 
instrumentos de trabajo
instrumentos de trabajoinstrumentos de trabajo
instrumentos de trabajo
 
C2 clases en java
C2 clases en javaC2 clases en java
C2 clases en java
 
Clase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpooClase2 ejemplosdeenumpoo
Clase2 ejemplosdeenumpoo
 
17533924.ppt
17533924.ppt17533924.ppt
17533924.ppt
 
Java 8 introducción a expresiones lambdas y api stream
Java 8  introducción a expresiones lambdas y api streamJava 8  introducción a expresiones lambdas y api stream
Java 8 introducción a expresiones lambdas y api stream
 

Mehr von Robert Wolf

Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gioRobert Wolf
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gioRobert Wolf
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gioRobert Wolf
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gioRobert Wolf
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gioRobert Wolf
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gioRobert Wolf
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gioRobert Wolf
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gioRobert Wolf
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gioRobert Wolf
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gioRobert Wolf
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gioRobert Wolf
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gioRobert Wolf
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gioRobert Wolf
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gioRobert Wolf
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gioRobert Wolf
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gioRobert Wolf
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gioRobert Wolf
 

Mehr von Robert Wolf (20)

Tema6resumido
Tema6resumidoTema6resumido
Tema6resumido
 
Tema4 herencia
Tema4 herenciaTema4 herencia
Tema4 herencia
 
Tema 6
Tema 6Tema 6
Tema 6
 
Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gio
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gio
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gio
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gio
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gio
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gio
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gio
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gio
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gio
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gio
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gio
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gio
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gio
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gio
 

Tema 10 clase abstractas e interfaz

  • 1. 1 Java Arrays y Cadenas 1 Clases abstractas e interfaces Java Arrays y Cadenas 2 Clases abstractas Clases cuya descripción es incompleta. Una clase abstracta declara métodos, pero no tiene que implementarlos. n No proporcionan la implementación de todos sus métodos w Los métodos no implementados se declaran como abstract n Una clase con un método abstracto debe declararse como clase abstracta w Pero una clase puede declararse como abstracta aunque no tenga ningún método abstracto Java Arrays y Cadenas 3 Clases abstractas Otras {abstract} Forma xpos ypos color ... dibuja setColor ... Circulo radio ... setRadio ... Rectangulo altura anchura ... setAltura ... Java Arrays y Cadenas 4 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){/*...*/}; } dibuja un círculo public class Rectangle extends Forma{ private int altura, anchura; // ... public void dibuja(){ /*...*/ }; public void setAltura(int){/*...*/}; } dibuja un rectángulo los métodos abstactos no tienen cuerpo Java Arrays y Cadenas 5 Clases abstractas n Las subclases de una clase abstracta deben: w Sobreescribir todos los métodos abstractos de la superclase, o bien w Ser declaradas como clases abstractas n Una clase abstracta no puede instanciarse w No se pueden crear objetos de una clase abstracta n Una clase abstracta puede incluir variables y métodos no abstractos. n No se pueden definir constructores abstractos o métodos estáticos abstractos. Java Arrays y Cadenas 6 Ejemplo clase abstracta public abstract class Figura { int x, y; public void mostrarOrigen() { System.out.println("x= "+x+" y= "+y);} public abstract double area(); // No tiene implementación public abstract double mostrarNombre(); } public class Triangulo extends Figura { protected int base, altura; public Triangulo (int ba, int al) { base=ba; altura=al; } public double area() { return base*altura/2; } public void mostrarNombre() { System.out.println(“triangulo”); } } public class Cuadrado extends Figura { protected int lado; public Cuadrado (int lado) { this.lado=lado; } public double area() { return lado*lado; } public void mostrarNombre() { System.out.println(“cuadrado”);}} Figura Triangulo Cuadrado
  • 2. 2 Java Arrays y Cadenas 7 Prueba clase abstracta public class PruebaClaseAbstracta { public static void main(String args[]) { Figura fig; Triangulo tri; Cuadrado cua; fig = new Figura(); // error no se puede //instanciar una clase abstracta tri = new Triangulo(4,3); tri.mostrarOrigen (); tri.mostrarNombre (); fig = tri; fig.mostrarNombre (); System.out.println("Area triangulo: "+fig.area()); cua = new Cuadrado(5); fig = cua; System.out.println("Area cuadrado: "+fig.area()); } } public class PruebaClaseAbstracta { public static void main(String args[]) { Figura fig; Triangulo tri; Cuadrado cua; fig = new Figura(); // error no se puede //instanciar una clase abstracta tri = new Triangulo(4,3); tri.mostrarOrigen (); tri.mostrarNombre (); fig = tri; fig.mostrarNombre (); System.out.println("Area triangulo: "+fig.area()); cua = new Cuadrado(5); fig = cua; System.out.println("Area cuadrado: "+fig.area()); } } Java Arrays y Cadenas 8 Interfaces Sólo declaran comportamiento n Se utiliza la palabra clave interface n Por defecto todos sus métodos son públicos y abstractos w No implementan el comportamiento n Por defecto todos sus atributos son públicos, constantes y de clase w Por legibilidad normalmente los declaramos static y final Java Arrays y Cadenas 9 Interfaces Permite simular algunos aspectos de la herencia múltiple n Define un tipo de datos n Posibilita el enlace dinámico Otras clases pueden implementar un interfaz n Cualquier clase que implemente un interfaz debe definir todos los métodos de dicho interfaz w Debe proporcionar la implementación de dichos métodos n Si la clase no proporciona la implementación para todos los métodos del interfaz debe ser declarada como abstracta Java Arrays y Cadenas 10 Declaración de interfaces Sintaxis Implementación del interfaz en una clase n 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 …….….…. } Java Arrays y Cadenas 11 interfaces Payable p = new Programmer(); sepermite Asalariado Empelado implements Programador extends Programador es un Asalariado Java Arrays y Cadenas 12 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 "); }} 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 "); }}
  • 3. 3 Java Arrays y Cadenas 13 Uso del interfaz con enlace dinámico public class PruebaInterfaz { public static void main(String args[]) { Elemento elem; Nombrable inter; elem = new Elemento(“Luis"); elem.mostrarNombre(); // una referencia a interfaz puede //utilizarse con una instancia de // una clase que lo implemente inter = elem; inter.mostrarNombre(); } } public class PruebaInterfaz { public static void main(String args[]) { Elemento elem; Nombrable inter; elem = new Elemento(“Luis"); elem.mostrarNombre(); // una referencia a interfaz puede //utilizarse con una instancia de // una clase que lo implemente inter = elem; inter.mostrarNombre(); } } Java Arrays y Cadenas 14 Ejemplo de interfaces Actor Perro ... actua() ... Canino {interface} Person ... act() ... Persona ... actua() ... Humano Java Arrays y Cadenas 15 Ejemplo de interfaces interface Actor { void actua(); } public class Persona extends Humaon implements Actor { public void actua(){ /*...*/}; //... } public class Perro extends Canino implements Actor { public void actua(){ /*...*/}; //... } sin cuerpo Java Arrays y Cadenas 16 Extensión de interfaces Se puede definir un interface que especialice a otro interface mediante extends n Es similar a la herencia de clases Java Arrays y Cadenas 17 Extensión de interfaces No obstante un interface puede extender a varios interfaces a la vez n Aquí la herencia múltiple no plantea problemas porque no se hereda código interface ElementoOrdenado extends Comparable, Cloneable, java.io.Serializable { // miembros y métodos propios del interfaz //ElementoOrdenado ..... } interface ElementoOrdenado extends Comparable, Cloneable, java.io.Serializable { // miembros y métodos propios del interfaz //ElementoOrdenado ..... } Java Arrays y Cadenas 18 Résumen de interfaces Las interfaces sirven para: n Declarar métodos que serán implementados por una o más clases. n Determinar la interfacede programación de un objeto, sin mostrar el cuerpo de la clase. n Capturar similitudes entre clases no relacionadas, sin forzar una relación entre ellas. n Describir objetos "tipo-función", que podrán ser utilizados como argumentos al invocar métodos sobre objetos.
  • 4. 4 Java Arrays y Cadenas 19 Résumen de interfaces Tipo herencia instanciable implementa datos no extends (simple) Se permiten metodos yes extends (simple) InterfaceAbstract Class algún método Class no se permiten nada no implements (multiple) Se permiten