Está en la página 1de 4

Clases abstractas e interfaces

Jav a Ar ray s y Cadenas 1

Clases abstractas
Clase scuya desc ripció n es incom pleta .Un a
cla s e a bstracta decl améto
ra dos, pe ro n o
tienequ e impl em entarlos.

Noprop orcion an la impleme nta ció n detodossu s
método s
Los método s no implementad ossede claran
como abs tract

Una clase con un méto do abs tr acto debe
declarars e como claseabst ra ct a
Pero una clase pued ede clarar secomo
ab stra ct a aunqueno tenga ningún método
abst ra cto

Jav a Ar ray s y Cadenas 2

Clases abstractas Clases abstractas


blic abstract class Forma private int xpos, ypos; private Color color;

Forma tra ct}


{abs pu { lo s métodos
xpos public abstract void dibuja();
ypos color public void setColor(Color c){ /*...*/ }; ab st ac tos no
... // ... tie ne n
cu er po
dibuja }
setColor
... pu blic clas
s Circle exte nd s Forma{ dibuja u n
privatein t radio; círc ulo
// ... public
Otras void dibu
ja (){ /*.. .*/ };
publi c void setRad io(in t){/*... */};
Rectangulo
Circulo
} dibu ja un
altura anchura
... public clas s Rectangl e extend s Form
a{ rect án gu lo
radio
...
private int altura , anchura;
setAltura
setRadio ... // ...c void dibu
ja (){ /*.. .*/ };
...
publi
publi c void setA
lt ura(i nt){/*.. .*/};
}
Jav a Ar ray s y Cadenas 3 Jav a Ar ray s y Cadenas 4

Clases abstractas Ejemplo clase abstracta


public abstract class Figura {

 Figura int x, y;
Las subclasesde una claseab stra ct a deben: public void mostrarOrigen () { System.out.println("x= "+x+" y= "+y);}
Sobreescri birtodo slo s méto dos abst racto s de public abstract double area(); // No tiene implementación public abstract double mostrarNombre ();
la supercla se, o bien
Se rdecl arada scomo clases abstracta s Trian

Una clase abs tr acta nopu ede instanci arse gulo
N o sepueden crearobjeto s deun a cl ase Cuadrado } public class Triangulo extends Figura { protected int base, altura; 1
public Triangulo (int ba, int al) { base=ba; altura=al; } public double area() { return base* altura/2; }

abstrac ta public void mostrarNombre () { System.out.println(“triangulo”); }
Una cl ase abs tr acta pued e i ncluirva riable s y }
método sno abs tr actos. public class Cuadrado extends Figura { protected int lado ;

Nose puedende finir con st ru ct oresabst ra ctos o public Cuadrado (int lado) { this.lado =lado; }
public double area() { return lado*lado; }
Jav a Ar ray s y Cadenas 5

Prueba clase abstracta


public class PruebaClaseAbstracta {
public static void main(String args[]) { Figura fig;
Triangulo tri; Cuadrado cua;

public class PruebaClaseAbstracta {


public static void main(String args[]) {
fig = new Figura(); // error no se puede
Figura abstracta
//instanciar una clase fig; tri = new Triangulo(4,3);
Triangulo
tri.mostrarOrigen (); tri;
tri.mostrarNombre ();
Cuadrado cua;

fig = new Figura();


fig = tri ; fig.mostrarNombre (); // error no se puede
System.out.println("Area //instanciar
triangulo: una.area());
"+fig clase
abstracta tri = new Triangulo(4,3);
tri.mostrarOrigen ();
tri.mostrarNombre
cua = new Cuadrado(5); fig = cua ; ();
System.out.println("Area cuadrado: "+fig.area());
} fig = tri ;
} fig.mostrarNombre ();
System.out.println("Area triangulo: "+fig
.area());

cua = new
Cuadrado(5); fig = cua

Interfaces
Sólo declaran comportamiento
a clav
s s  Se utiliz a la palabr e interfac e
públicost

N Por defe cto todo s su s método on
y abstrac os
o impleme ntan el comportamiento

Por defe cto todo s su s atribu tos
so n
públ ic os, constantes y declas e
Por legibilidad normalmente los declaramos
interface NombreInterfaz {
static y final tipo static final NOMBRECONSTANTE1 = valor;
…….….….
ám public tipoDevuelto nombreMetodo1(
Jav a Array
s y Cadenas 8 listaParámetros);

class ImplementaciónNombreClase implementsdel


interfazNombreInterfaz1en una clase
[, NombreInterfaz2 ..] {
 Una// declaraciónclase

Interfaces Declaración de interfaces


Sintaxis
Perm itesi mu lar algu naspectos
os dela terface NombreInterfaz {
here ncia múlt iple intipo static final NOMBRECONSTANTE1 = valor;

De fineun tipo deda to s …….….….
public tipoDevuelto nombreMetodo1( listaParámetros);
 …….….….
Po sibilita el enlace din ico
interfaces
Otra s cl ases puede n impl em en tar uninte rfaz
}
 Cualquier clase que implemente un interfaz debe definir todos los métodos de dicho interfaz
Prog
ra mado r es un As alari ado public interfaceimplements
cl ass NombreClase Nombrable {
NombreInterfaz1
AsaDe
la be
ria do
prop or cionar laim pleme ntac iónde dich os méto do s static final
[, NombreInterfaz2 ..] {boolean CIERTO =

Si la clase noprop or ciona la impl em en tación para true; public void
// declaración atributos y métodos de la clase

to doimp
s le
lo me
s nt
mésto dos delinte rf azdebe serdecl arada mostrarNombre();
como abst racta } …….….….
Empelado public}
class Elemento implements Nombrable10
Jav a Array
s y Cadenas 9 Jav a Array
s y Cadenas
{ String nombre;
ex tends public Elemento(String nom) {
Payab le p = n ew Programm er() ;
nombre = nom; }
Pr og ra mado r
// obligatorio implementar método
mostrarNombre public void
mostrarNombre(){
System.out.println("Nombre:
Jav a Array
s y Cadenas 11

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 mostr
System.out.println("Nombre: "+nombre); if (CIERTO) 2
System.out.println("Constante CIERTO ");
}}

Uso del interfaz con enlace dinámico


public class PruebaInterfaz {
public static void main(String args[]) { Elemento elem;
Nombrable inter;
public class PruebaInterfaz {
elem = new Elemento(“Luis");
public elem.mostrarNombre();
static void main(String
args[]) { Elemento elem;
Nombrable inter;
// una referencia a interfaz puede
//utilizarse con una instancia de
// una claseelem
que =
lonew
implemente inter = elem; inter.mostrarNombre();}
Elemento(“Luis");
}
elem.mostrarNombre();
P
e

// una referencia a interfaz r


s

puede
//utilizarse con una instancia
de
// una clase que lo

Ejemplo de interfaces {interface}

Humano Ac t or Cani no

Per s ona Perro

... ...

ac t ua() ac t ua()
... ...

Java Arrays y Cadenas 14

Extensión de interfaces
Ejemplo de interfaces Se puede definir un interface que especialiceo interface median exte
in te rface Actor
{
void actua();
}
sin cuerp o a otr te
pu bl ic cl as s Perso na exte nd s Humao n imple me nts
Ac to r { 
public void actua (){ /*...*/} ; Es sim
ila r alahe rencia de clase s
} //..
.

public cl
Actor
ass Perro exte nd s Canin o imple ments
publi {
c vo
id actua(){ /*..
.* /} ;
//.. .
}
problemas
Jav a porqueArray
no seenahereda
s y Cad s código 15 Jav a Array
s y Cadenas 16

interface ElementoOrdenado extends


Comparable, Cloneable,
java.io.Serializable {
// miembros y métodos propios del
interfaz
}

Extensión de interfaces Résumen de interfaces


No obstante un interface puede extenda varios interface :
La s interfaces si rven pa ra

er s a lave z Declar ar mét odo s que serán impleme nt ado s por
una o más clases.r
 
Aquí la here ncia mú
lt ip le no plant ea De te rmi
na la in te rf ace
de pr ogram ació n deun
objeto, sin mostrar el cuerpo de la clase. 3
t

Cap urar sim ilitude s entr e clases norelacion adas,
interface ElementoOrdenado extends sin
r. f orzaun ar elac ió n entr e ella
s
Comparable, Cloneable, java.io.Serializable { Describir objetos "tipo -función", que podrán ser
t re obje os.
sob
.....
}
Jav a Array
s y Cadenas 17 Jav a Array
s y Cadenas 18

Résumen de interfaces

Class Abstract Class Interface


Tipo

extends (simple) extends (simple) implements (multiple)


he re nc ia

nc iab le yes no no
nsta
mplemen ta metodos algún método nada
dato
s
Se permiten Se permiten no se permiten

Jav a Array s y Cadenas 19

También podría gustarte