Professional Documents
Culture Documents
Fuente :Jaime Ramrez, ngel Lucas Gonzlez. DLSIIS. Facultad de Informtica ni!ersidad "olit#cnica de $adrid.
1
Cosa
Concepto de Herencia
% Los o&'etos se definen como miem&ros de clases. (onociendo la clase de un o&'eto se )uede tener muc*a informaci+n so&re el mismo. ,n )rogramaci+n orientada a o&'etos se )ueden definir clases -su&clases. en t#rminos de otras clases -su)erclases.. /oda su&clase *ereda el estado -en la forma de declaraci+n de !aria&les. 0 los m#todos de la su)erclase. Sin em&argo, las su&clases no estn limitadas al estado 0 com)ortamiento de su su)erclase. Las su&clases )ueden a1adir nue!as !aria&les miem&ros 0 nue!os m#todos a los *eredados de la su)erclase 0 dar im)lementaciones )articulares )ara los m#todos *eredados anulando la definici+n original de los m#todos dada )or la su)erclase.
Herencia en "a#a
% Ja!a )ermite definir una clase como su&clase de una clase )adre.
class clase_hija extends clase_padre { .......... }
Clase Padre
Clase Hija
%jemplo de Herencia
class Poly,on protected int +idth. hei,ht/ public #oid set'#alues (int a. int b) +idth0a/ hei,ht0b/1 1 class Rectangle extends Polygon public int area() - return (+idth 2 hei,ht)/ 1 1 class Triangle extends Polygon public int area() - return (+idth 2 hei,ht 3 2)/ 1 public static #oid main(4trin,56 ar,s) 7ectan,le rect/ 8rian,le tr,l/ rect 0 ne+ 7ectan,le()/ tr,l 0 ne+ 8rian,le()/ rect9set'#alues (!.$)/ tr,l9set'#alues (!.$)/ 4ystem9out9print(:area: & rect9area() & ;<n; & tr,l9area() & ;<n;)/ 11
$
Rectangle &area()
Triangle &area()
Constructores y Herencia
% (uando se declara un o&' de una clase deri!ada, se e'ecutan los conts siguiendo el orden de deri!aci+n, es decir, )rimero el de la clase &ase, 0 des)u#s los conts de las clases deri!adas de arri&a a a&a'o. % "ara )asar )armetros al constructor de la clase )adre:
super (para1, para2, ..., paraN)
=
%jemplo de super
class "ersona 2 )ri!ate String nom&re3 )ri!ate int edad3 )u&lic "ersona-. 24 public Persona (String n, int e) 2 nom&re 5 n3 edad 5 e3 4 4 class 6lumno e7tends "ersona 2 )ri!ate int curso3 )ri!ate String ni!el6cademico3 public Alumno (String n, int e, int c, String nivel) 2 super(n, e); curso 5 c3 ni!el8academico 5 ni!el3 4 )u&lic static !oid main-String9: args. 2 6lumno a 5 ne; 6lumno-<"e)e<, =, >, <&ueno<.3 4 4
>
% 6*ora &ien:
? (on padre s+lo )odemos acceder a atri&utos 0 m#todos def. en la clase )adre.
@
%jemplo
class "ersona 2 ................... 4 class 6lumno e7tends "ersona 2 ...................... )u&lic String toString-. 2 return su)er.toString-. J curso J ni!el6cademico3 4 4 class Profesor extends Persona { private String asignatura; public Profesor (String n, int e, String asign) { super(n, e); asignatura asign; } public String toString() { return super.toString() + asignatura; } }
11
Polimorfismo
% na misma llamada e'ecuta distintas sentencias de)endiendo de la clase a la Aue )ertenezca el o&'eto al Aue se a)lica el m#todo. % Su)ongamos Aue declaramos: Persona p; % "odra suceder Aue durante la e'. del )rograma, ) referencie a un )rofesor o a un alumno en distintos momentos, 0 % ,ntonces:
? Si ) referencia a un alumno, con ).toString-., se e'ecuta el toString de la clase 6lumno. ? Si ) referencia a un )rofesor, con ).toString-., se e'ecuta el toString de la clase "rofesor.
% !nlace din"mico: Se decide en tiempo de e#ecuci$n Au# m#todo se e'ecuta. % IJI@: So&recarga de fs 5K enlace esttico -t. de com)ilaci+n..
12
%jemplo de Polimorfismo
)u&lic static !oid main-String9: args. 2 "ersona !9:5ne; "ersona9=L:3 EE Se introducen alumnos, )rofesores 0 )ersonas en ! for -int i5L 3 iM=L3 iJJ. EG Se )iden datos al usuario de )rofesor, alumno o )ersona GE s;itc* -ti)o. 2 case EG )rofesor GE: !9i: 5 ne; "rofesor -N..3 &reaO3 case EG alumno GE: !9i: 5 ne; 6lumno-N.3 &reaO3 case EG )ersona GE: !9i: 5 ne; "ersona-N.3 &reaO3 default: EG ,RRIR GE 4 4 for -int i5L 3 iM=L3 iJJ. S0stem.out.)rintln-v%i&); EE enlace dinmico con toString-. 1 4
Mtodos abstractos
% /enemos un m#todo f-. a)lica&le a todos los o&'etos de la clase 6.
? rea de un )olgono.
% "ara declarar un m#todo como a&stracto, se )one delante la )ala&ra reser!ada a s!rac! 0 no define un cuer)o:
a s!rac! !ipo no" re#$!odo(....);
% Luego en cada su&clase se define un m#todo con la misma ca&ecera 0 distinto cuer)o.
1!
Clases Bbstractas
% Si una clase contiene al menos un m#todo a&stracto, entonces es una clase a&stracta. % na clase abstracta es una clase de la Aue no se )ueden crear o&'etos, )ero )uede ser utilizada como clase )adre )ara otras clases. % Declaraci+n:
a s!rac! class No" reClase { .............. }
1$
alumno -curso -ni#elBcademico &cambiarCurso() &to4trin,() C 4trin, &pa,oMensual() C double &mostrarBsi,naturas() profesor -asi,natura &to4trin,() C 4trin,
1=
1>
1?
2A
Enterfaces
% Las interfaces Aue )ro)one Ja!a son e7)resiones )uras de dise1o. Se trata de aut#nticas conce)tualizaciones no im)lementadas Aue sim)lemente marcan una gua acerca de Au# es lo Aue *a0 Aue *acer, )ero no desarrollan un mecanismo de soluci+n. % Se trata de la manera de declarar m#todos a&stractos 0 constantes Aue )osteriormente )uedan ser im)lementados de diferentes maneras segQn las necesidades. % "or e'em)lo una misma interfaz )odra ser im)lementada en una !ersi+n de )rue&a de manera )oco +)tima, 0 ser acelerado con!enientemente en la !ersi+n definiti!a tras conocer ms a fondo el )ro&lema.
21
Enterfaces
% "odra suceder Aue los o&'etos de !arias clases com)artan la ca)acidad de e'ecutar un cierto con'unto de o)eraciones. % R de)endiendo de la clase de o&'eto, cada o)eraci+n se realice de diferente manera. % ,'em)lo:
? (lases: (irculo, ,li)se, /riangulo, .... ? /odas esas clases inclu0en los m#todos: rea, )erimetro, cam&iar,scala, etc.
% "odramos definir una interfaz comQn Aue agru)e todos los m#todos comunes -como m#todos a&stractos.. % R luego definir !arias clases de modo Aue im)lementen una misma interfaz.
22
%jemplo de EnterfaF
public interface 7igura { abstract double area(); abstract double perimetro(); } )u&lic class (irculo implements 7igura 2 )ri!ate dou&le radio3 )ri!ate static dou&le "I5D.=F=S3 .............. )u&lic dou&le area-. 2 return "IGradioGradio3 4 )u&lic dou&le )erimetro-. 2 return >G"IGradio3 4 4 )u&lic class (uadrado implements 7igura 2 )ri!ate dou&le lado3 .............. )u&lic dou&le area-. 2 return ladoGlado3 4 )u&lic dou&le )erimetro-. 2 return FGlado3 4 4
HHinterfaFII
Gi,ura
area() perimetro()
Cuadrado
Circulo
%jemplo de EnterfaF
% na interfaz )uede incluir tam&i#n definiciones de constantes a )arte de m#todos a&stractos. % na misma clase )uede im)lementar ms de una interfaz Perencia mQlti)le de interfaces % Se )ueden crear 'erarAuas de interfaces -con e7tends@@.. % Se )ueden declarar referencias a o&'etos Aue im)lementen una cierta interfaz.
double totalAr%a(Figura v[]) { double t !" for (int i !" i#v$l%ngt&" i'') t ' v[i]$ar%a()" // %nla*% +in,mi*o return t" -
2!
"erarJuKa de %Lcepciones
2?