Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clases (ficheros.java)
Miembros
Atributos Mtodos
Tipo Tipo de Mtodos Mtodos
Primitivo referencia Normales Especiales
Objetos Arrays Constructor Main
String
Repaso (sesin 2)
Jerarqua de herencia en Java
Object
Bedel Profesor
Repaso (sesin 2)
Jerarqua de herencia en Java
En Java, todas las clases estn
relacionadas en una nica jerarqua de
herencia
Una clase puede:
heredar explcitamente de otra clase
o bien heredar implcitamente de la clase
Object (definida en el ncleo de Java)
Esto se cumple tanto para las clases
predefinidas como para las clases
definidas por el usuario
Polimorfismo
Qu es
Sintaxis:
(tipo) identificador
Dos tipos de casting:
widening: Una subclase se utiliza como
instancia de la superclase. (Ejemplo: llamamos
a un mtodo de la clase padre que no ha sido
sobreescrito). Es implcito.
narrowing: La superclase se utiliza como
instancia de una subclase. Conversin explcita.
Slo se puede hacer casting entre clases
padre e hija no entre clases hermanas
Casting (Conversin de tipos)
Widening o upcasting
Upcasting automtico
Alumno a2;
//conversin descendente implcita No funciona Una persona no
siempre es un
a2 = p1; //error porque no hago conversin explcita
alumno
Sintaxis:
objeto instanceOf clase
Comprueba si un objeto es realmente de la
clase derivada
Ejemplo:
public Alumno comprueba (Persona p) {
Alumno a = null;
if (p instanceOf Alumno)
a = (Alumno) p;
return a;
}
Clases abstractas
Qu son?
}
}
public abstract class Recurso {}
public class Aula extends Recurso {}
Llamamos a decirDescripcion sobre objetos de
tipo Recurso y en tiempo de ejecucin mira a ver public class Ordenador extends Recurso{}
qu tipo de objeto contiene (Ordenador o Aula)
e invoca el mtodo correspondiente; esto es lo que * El color gris claro indica que no tiene cdigo
llamamos Ligadura dinmica ** La negrita indica que tiene cdigo
Interfaces
Qu son?
Los interfaces llevan el concepto de clase abstracta un
paso ms adelante
Todos los mtodos de un interfaz son abstractos
Un interfaz pueden considerarse similar a una clase abstracta
pura
El acceso a un interfaz es pblico
Los atributos en los interfaces son implcitamente
public, static y final
Los mtodos en los interfaces no tienen modificadores de
acceso, son pblicos
Los interfaces son implementados por clases
una clase implementa un interfaz definiendo los cuerpos de
todos los mtodos.
una clase abstracta implementa un interfaz rellenando el cuerpo
o bien declarando abstractos los mtodos
una clase puede implementar uno o ms interfaces (herencia
mltiple)
Interfaces
Qu son?
implements
Crculo Paraleleppedo
Todas las clases que implementen radio dim1, dim2
Figura tienen que implementar area() area()
todos los mtodos declarados en
Figura (o declararlos abstractos) extends
Rectngulo
public interface Figura
area()
public class Circuloimplements Figura
public class Paralelepipedo implements Figura
Interfaces
Declaracin
Sintaxis:
visibilidad interface nombre {
tipo variable = valor;
tipoDevuelto nombreMetodo(listaParametros);
}
Visibilidad es public o se omite
Todos los mtodos son implcitamente abstract
y public
Las variables de la interfaz son static y final
Representan constantes
28
nati@it.uc3m.es Java: Interfaces/
Interfaces
Cmo se usan?. Ejemplo
29
nati@it.uc3m.es Java: Interfaces/
Interfaces
Cmo se usan?. Ejemplo
interface Imprimible {
void imprime();
}
System.out.println(res);
}
}
31
nati@it.uc3m.es Java: Interfaces/
Interfaces
Cmo se usan? Extensin de interfaces.
32
nati@it.uc3m.es Java: Interfaces/
Interfaces
Cmo se usan?. Ejemplo
WindowListener WindowAdapter
MiOyenteVentana
33
nati@it.uc3m.es Java: Interfaces/
Interfaces
Para qu sirven? Herencia mltiple
metodo1 metodo1
Clase A Clase B
extends extends
C c = new C();
c.metodo1() // ????
Clase C
metodo1 metodo1
Clase A interface B
extends implements
C c = new C();
c.metodo1() //
Clase C OK
38
nati@it.uc3m.es Java: Interfaces/
Ejercicio: JavaRanch
import java.awt.* ;
public interface Shape
{
public void draw( Graphics g );
}
import java.awt.* ;
public class Circle implements Shape
{
private int x ;
private int y ;
private int wide ;
private int high ;
private Color color ;
}
Ejercicio: JavaRanch
import java.awt.* ;
public class Box implements Shape
{
private int x ;
private int y ;
private int wide ;
private int high ;
private Color color ;
Box( int x , int y , int wide , int high , Color color )
{
this.x = x ;
this.y = y ;
this.wide = wide ;
this.high = high ;
this.color = color ;
}
import java.awt.* ;
public class Poly implements Shape
{
int[] x ;
int[] y ;
private Color color ;
import java.awt.* ;
public class ShowShapes extends Frame
{
static int[] vx = { 200 , 220 , 240 , 260 , 280 , 250 , 230 };
static int[] vy = { 150 , 150 , 190 , 150 , 150 , 210 , 210 };
// a
new Circle( 130 , 150 , 60 , 60 , Color.green ) ,
new Box( 170 , 180 , 20 , 30 , Color.blue ) ,
new Circle( 150 , 170 , 20 , 20 , Color.white ) ,
42
nati@it.uc3m.es Java: Interfaces/
Ejercicio: JavaRanch
// v
new Poly( vx , vy , Color.black ) ,
// a
new Circle( 290 , 150 , 60 , 60 , Color.green ) ,
new Box( 330 , 180 , 20 , 30 , Color.blue ) ,
new Circle( 310 , 170 , 20 , 20 , Color.white ) ,
};
ShowShapes()
{
setBounds( 200 ,150 , 400 , 250 );
setVisible( true );
}
}
43
nati@it.uc3m.es Java: Interfaces/
Resumen Orientacin a objetos
Clase (concreta)
Todos los mtodos implementados
Clase abstracta
Al menos un mtodo no implementado,
slo declarado
modificador abstract
Interfaz
Nada de implementacin
palabra reservada: interface
Resumen Orientacin a Objetos
Qu son Excepcion
Para qu sirven
Qu tipos hay
Cmo utilizarlas
Cmo se produce:
implicitamente (cuando se produce un error)
explcitamente throw new IOException(mensaje)
Qu hacer:
Tratarla:
Rodear con try{} las sentencias susceptibles de lanzar
excepciones
Rodear con catch(nombreException){}las sentencias que se
deben ejecutar cuando se produce
Lanzarla public void miMetodo throws IOException
Rodear con finally{} el cdigo que queremos que
se ejecute siempre