Documente Academic
Documente Profesional
Documente Cultură
1.IntroduccinaJava
2.Programacin
OrientadaaObjetos
3.Fundamentosdel
lenguajeJava
4.Trabajandocon
Objetos
5.ManejodeClases,
MtodosyVariables
6.ConceptosAvanzados
deJava
1.IntroduccinaJava
1.1.Introduccin
1.6.ElAPIdelSDK
1.2.Orgenesehistoriadel
lenguajeJava
1.7.Cmocompilararchivos
1.3.CaractersticasdeJava
1.4.ElSoftware
DevelopmentKitdeJava
1.5.Instalaciny
configuracindelJ2SE
1.4.2
1.8.ElClasspath
1.9.EjecucindeProgramas
enJava
1.10.Resumen
1.1.Introduccin
Hablaremosde:
origenehistoriadeJava
caractersticasquelodiferenciandeotros
lenguajes
instalacindelaplataforma
consejosdecompilacinyejecucin
1.2.Orgenesehistoriadellenguaje
Java
DesarrolladoporSunMicrosystemsen1991
Destinadoaelectrodomsticosdomsticos
Independientedelaplataforma
BasadoenC++
Elproyectosedisolvien1994
SundesarrollaHotJavaconsoportedeapplets
Netscapedasoportealosapplets
1.3.CaractersticasdeJava
Simplicidad:BasadoenC++parafcilaprendizaje
OrientadoaObjetos:Ventajasfrenteaprocedural
Distribuido:Trabajoenred
Robusto:EliminaproblemascomunesenC
Seguro:sandbox
IndependenciadePlataforma(WORE):JVM
Multithreaded:Mltipleshilosdeejecucin
1.4.ElSoftwareDevelopmentKitde
Java
JDKSDK:Herramientasparacompilaryejecutar
J2SE(Java2StandardEdition)
J2ME(Java2MobileEdition)
J2EE(Java2EnterpriseEdition)
1.5.Instalacinyconfiguracindel
J2SE1.4.2
Descarga:
http://java.sun.com/j2se/1.4.2/download.html
Unavezinstalado:
W98/ME:AadiralAutoexec.bat
SETPATH=c:\j2sdk1.4.2\bin;%PATH%
WNT/200/XP:Paneldecontrol/Sistema/
Avanzado/VariablesdeEntorno/Variablesdel
SistemaaadiraPATHlarutadelSDK
Linux:Aadir$HOME/.bashrc
$HOME/bash_profile
exportPATH=/usr/local/j2sdk1.4.2/bin:$PATH
1.6.ElAPIdelSDK
http://java.sun.com/j2se/1.4.2/docs/api/
1.7.Cmocompilararchivos
javacddir_destclasspathcp1:cp2archivo.java
Ej:javacd.MiClase.java
1.8.ElClasspath
Caminosdebsquedadeclasesutilizadas
ComomnimolasdelJavaRunTime:
jdk1.4/jre/lib/rt.jar
1.9.EjecucindeProgramasenJava
javaMiClase
Fallostpicos:
mtodomain()tienequeestardefinido
javaMiClase.class(sobra.class)
sisaltajava.lang.NoClassDefFoundErrorynuestra
clasedefinepackagepaquete.claseshayque
ejecutar:
javapaquete.clases.MiClase
1.10.Resumen
Diseadoparaelectrodomsticos,actualmentepara
aplicacionesdeservidor
Simplicidad,orientacinaobjetos,distribucin,robustez,
seguridad,independenciadeplataforma,multihilo
AlcompilarsegenerabytecodeinterpretadoporlaJVM
SDK:herramientasparacompilaryejecutar.J2SE,J2EE,
J2ME
API:conjuntodeclases
Compilador:javac;ejecucin:java;classpathdefine
caminodebsqueda
2.ProgramacinOrientadaaObjetos
2.1.Introduccin
2.4.Herencia
2.2.Orientacinaobjetos 2.5.Paquetes
2.3.ClasesenJava.
AtributosyMtodos
2.6.Resumen
2.1.Introduccin
Quesonclasesyobjetos
Atributosymtodosenlasclases
Herencia
Paquetes
2.2.Orientacinaobjetos
(1/2)
Ordenador:placa,procesador,memoria,discoduro,etc.
Discoduro:discossuperpuestos,cabezalectora,circuito
controlador,etc.
Eltodoestcompuestoporpiezasycadapiezaporpartes
mspequeas
Siseestropeaundiscoduroyexistenestndaresparala
conexin(indep.fabricante)sinproblema.
Objeto(discoduro),funcin(almacenardatos),atributos(los
datos),interfaz(IDE,SCSI)
2.2.Orientacinaobjetos
(2/2)
Objetos:
Realizanunatareaporssolos
Proporcionanencapsulacin
Sonreutilizables
Proporcionanescalabilidad(elprogramapuede
crecer)ymodularidad(divisinenbloquespara
fcilcomprensin)
2.3.ClasesenJava.Atributosy
Mtodos(1/4)
Escribimosclases(abstraccin,plantilla)noobjetos
(realizacin)
2.3.ClasesenJava.Atributosy
Mtodos(2/4)
classCoche{
booleanestadoMotor=false;
Stringcolor;
Stringmodelo;
...
2.3.ClasesenJava.Atributosy
Mtodos(3/4)
...
voidarrancar(){
if(estadoMotor==true)
System.out.println(Cocheyaarrancado);
else{
estadoMotor=true;
System.out.println(Arrancado);
}
}
...
2.3.ClasesenJava.Atributosy
Mtodos(4/4)
...
voiddetener(){
if(estadoMotor==false)
System.out.println(Cocheyadetenido);
else{
estadoMotor=false;
System.out.println(Detenido);
}
}
}//findelaclaseCoche
2.4.Herencia
(1/2)
Todaclaseexistedentrodeunajerarqua
EnJava,todaclasetieneunaysolounaclasepor
encima(herenciasimple)
Laclaseheredamtodosypropiedadesdesu
superclase
Cadasubclaseextiendeyconcretalafuncionalidady
caractersticasdesusuperclase,seespecializa
EnJavatodaslasclasesheredandeObject
2.4.Herencia
(2/2)
classAnimal{
floatpeso;
voidcomer(){}
}
classMemiferoextendsAnimal{
booleansangreCaliente;
voidparir(){}
voidamamantar(){}
}
2.5.Paquetes
conjuntodeclaseseinterfacesrelacionados
unaformadecrearlibreras
APIJava,packagejava
import
Pordefectosiempreseincluyejava.langsinnecesidad
delimport
2.6.Resumen
ProgramasJava:compuestosporobjetos
independientesquesecomunicanentres
Objetos:tienenatributos(susvariables)ymtodos
(comportamiento)
Clases:abstraccindeobjetos(plantillas)
Todaclaseheredaatributosymtodosdesu
superclase(cabezadepirmidejava.lang.Object)
Paquetes:agrupacindeclases
3.FundamentosdellenguajeJava
3.1.Introduccin
3.5.Instrucciones
3.2.Comentarios
3.6.Expresionesy
Operadores
3.3.VariablesyTiposde
Datos
3.7.ControldeFlujo
3.4.Literales
3.8.Resumen
3.1.Introduccin
Introduciremoslaherramientasparaescribir
programasenJava
Veremoslasintaxisdelasinstrucciones,variables,
tiposdedatos,literales,operadoresyflujode
programa
3.2.Comentarios
/*Comentariosde
variaslneas*/
intvariable;//Comentariodefinaldelnea
/**
*ComentariodeJavadoc
*@paramparametroDescripción
*/
3.3.VariablesyTiposdeDatos
Zonasdememoriadondealmacenarvalores
Tienen:tipo,nombreyvalor
Antesdeutilizarlashayquedefinirlas
3.3.1.Elnombredelavariable
Sepuedendefinirencualquierparte(peromejoral
principio)
Primercarcter:letra,guinbajo(_)odlar($)
Apartirdelsegundo:tambinpermitenmeros
Casesensitive
Pornorma,laprimeraletraenminscula
Separarpalabrasconletramayscula
3.3.2.Laasignacin
intnumroEntero,numero2Entero=3;
intx=4,y=5,z=6;
booleanmotorEnMarcha=true;
Stringtexto;
texto=Estoesunacadenadetexto;
3.3.3.Eltipo
Tipoprimitivo(boolean,char,byte,short,int,long,
float,double)
Claseointerfaz
Arraydeelementos(distintodelaclaseArray)
3.4.Literales
Formadeespecificarunvalor
Tipos:deentero,depuntoflotante,decaracteres,de
cadenas,etc
3.4.1.Literalesdeenteros
intentero=65535;//Valordecimal
intentero=0xFFFF;//Valorhexadecimal(0x)
intentero=0177777;//Valoroctal(0)
longenteroLargo=22L;//Entero64bits(L)
3.4.2.Literalesdepuntoflotante
doubleflotanteLargo=5.34;//Notacindecimal
doubleflotanteLargo=3.00e+8;//Notacincientfica
floatflotanteCorto=5.34F;//Notacindecimal32bits
floatflotanteCorto=3.00e+8F;//Cientficade32bits
Pordefectocualquierliteraldepuntoflotanteesde
tipodouble.Siqueremosqueseafloathayque
especificarloconF
3.4.3.Literalesdecaracteres
Sedefinenutilizandocomillassimples
charcarcter='a';
AdmitencaracteresdeescapeASCIIoUnicode
charsaltoLinea='\n';
3.4.4.Literalesdecadena
Conjuntodecaracteresysecuenciasdeescapeentre
comillasdobles
NormalmenteserninstanciasdelaclaseString
Stringcadena=Estoesunacadena;
Stringcadena=Cadenacon\comillas\dentro;
3.5.Instrucciones
(1/2)
SintaxismuysimilaraCoC++
Todaslasinstruccionesaparecendentrodeunbloque
Unbloqueestodoaquelloqueestentre{y}
Todaslasinstruccionesfinalizancon;conexcepcin
delassentenciasdecontroldeflujo
Alcancedevariableslimitadoasubloque
3.5.Instrucciones
(2/2)
classClaseEjempo{
intvariable=1;
voidmetodo(){
if(variable==1)
System.out.println(Lavariablevale1);
else{
System.out.println(Lavariablevale0);
}
}
}
3.6.ExpresionesyOperadores.
Preferencia(1/2)
Expresin=instruccinquedevuelveunvalor
Lasexpresionesutilizanoperadores(definenla
operacinarealizarentrelosoperandos)
Existeunarelacindeprioridadentreoperandos
Aigualprioridadseevalandeizquierdaaderecha
Paracambiarlaprioridadseutilizanlosparntesis
3.6.ExpresionesyOperadores.
Preferencia(2/2)
Pri. Operador Operandos
1
++, Aritmticos
1
!
Booleano
1
~
Entero
1
(tipo) Cualquiera
2
*,/,% Aritmticos
3
+,
Aritmticos
3
+
String
4
<<
Entero
4
>>
Entero
5 <,<=,>,>= Aritmticos
5 instanceof Objeto
6
==,!= Tiposprimitivos
Descripcin
Incrementoydecremento
ComplementoLgico
Complementoenbinario
Casting
Multiplicacin,divisin,mdulooresiduo
Adicinysustraccin
Concatenacindecadenas
Desplazamientodebitshacialaizqueirda
Desplazamientodebitshacialaderecha
Comparacinnumrica
Comparacindetipo
Igualdadodesigualdaddevalor
3.7.ControldeFlujo
Sentenciasquepermitenmodificarelflujodeejecucin
delosprogramas
3.7.1.ifelse
(1/2)
if(condicion)
instruccinobloquedeinstrucciones;
else
instruccinobloquedeinstrucciones;
Donde:
condicin:Expresinbooleana
3.7.1.ifelse
(2/2)
classControlFlujo{
publicstaticvoidmain(Sringargs[]){
Stringcadena1=hola;
Stringcadena2=hola;
Stringcadena3;
if(cadena1.equals(cadena2)){
System.out.println(Cadenasiguales);
cadena3=cadena2;
System.out.println(Cadena3:+cadena3);
}
else
System.out.println(Cadenasdistintas);
}
}
3.7.2.Elcondicionalswitch
(1/2)
Permitecompararunavariableconvariosvalores
Lavariableescomparadaconcadaunodelosvalores
yseejecutanlassentenciasdeaquellosquecoincidan
Seadmiteelvalorpordefectodefaultquecoincidecon
cualquiercosa
Lavariabledebeserdeuntipoprimitivoquepuedaser
convertidoaint
Lasentenciabreakfuerzalasalidadelswitch
Losvaloresdebenserconstantes(ovariablesfinal)
3.7.2.Elcondicionalswitch
(2/2)
classUsoDeSwitch{
publicstaticvoidmain(Stringargs[]){
inta=3;
switch(a){
case1:
System.out.println(Es1);
break;
case2:
System.out.println(Es2);
break;
default:
System.out.println(Noes1ni2);
}
}
}
3.7.3.Bucleswhileydowhile
(1/2)
classUsoDeWhile{
publicstaticvoidmain(Stringargs[]){
inta=0,b=10;
while(a<10&&b>0){
System.out.println(a:+a+yb:+b);
a++;b;
}
}
}
3.7.3.Bucleswhileydowhile
(2/2)
classUsoDeDoWhile{
publicstaticvoidmain(Stringargs[]){
inta=0,b=10;
do{
System.out.println(a:+a+yb:+b);
a++;b;
}while(a<10&&b>0);
}
}
3.7.4.Buclesfor
classUsoDeFor{
publicstaticvoidmain(Stringargs[]){
inta,b=10;
for(a=0;a<10;a++){
System.out.println(a:+a+yb:+b);
b;
}
}
}
7.8.Resumen
Todavariabletienetipo,nombreyvalor
Lostipospuedenser:unodelos8primitivos,unaclase,unarray
deelementos
Losliteralesdefinenlaformaenqueespecificamosunvalordeuna
variable
Lasinstruccionesseagrupanenbloques
Unaexpresinesunainstruccinquedevuelveunvalor
Sepuedenconcatenarcadenasmedianteel+
Sentenciascondicionales:ifelse,switch
Sentenciasrepetitivas:while,dowhile,for
4.TrabajandoconObjetos
4.1.Introduccin
4.5.Conversinmediante
Casting
4.2.Creaciny
DestruccindeObjetos 4.6.Arrays
4.3.Invocacinde
VariablesyMtodos
4.7.Trabajandocon
cadenasdecaracteres
4.4.Mtodos
Constructoresdeuna
Clase
4.8.Resumen
4.1.Introduccin
Aprenderemosacrear,destruirytrabajarconobjetos.
Aprenderemosainvocaralosmtodosyatributos,
veremosqueeselcastingyestudiaremoslosarraysy
lascadenasdecaracteres
4.2.CreacinyDestruccindeObjetos
Instancia=Objeto
Instanciarunaclase=crearunobjetoapartirdedicha
clase
Cocheferrari=newCoche();
DefineunavariabledetipoCoche,denombreferrariy
quealmacenaunainstanciadelaclaseCoche.
Elconstructordelaclasepuedeadmitirparmetros.
Recolectordebasura:nosenecesitadestruirobjetos
4.3.InvocacindeVariablesyMtodos
Unaclase,porssola,nopuedeejecutarse.Debe
tenerunmtodomainquecreeunobjetodelaclaseo
debeserllamadadesdeotraclase
Todoslosmtodoshayquedefinirlosdentrodela
clase,inclusoelmain
Podemosaccederaunapropiedadmediante
objeto.propiedad
Podemosinvocarunmtodomediante
objeto.metodo(parmetros)
4.4.MtodosConstructoresdeuna
Clase
Inicializaunnuevoobjeto
Eloperadornew:
reservamemoriaparaelobjeto
inicializalasvariablesdeinstanciadelobjeto
invocaalmtodoconstructor
Javadefineunconstructorpordefectosinparmetros
Unconstructornodevuelveningntipo(nivoid)
Unconstructortieneelmismonombrequesuclase
4.5.ConversinmedianteCasting
Elcastingpermitecambiarelvalordeunobjetootipoprimitivo
aotrotipodiferente
Paratiposprimitivossilaconversinesdeuntipoms
grandeaunomspequeoestimplcita:
intx=3;
floaty=x;
Encasocontrariohayqueespecificarelcasting:
floatx=100f;
inty=(int)x;
LasconversionesentreObjetossolamentesepermitensi
existenrelacionesdeherencia
4.6.Arrays
(1/2)
Coleccindeelementosordenados
EnJava,losarrayssonobjetos
Todossuselementosdebenserdelmismotipo
Sedefinencomo:
Stringcadenas[];
o
String[]cadenas;
Sepuedeninicializarenladefinicin:
Stringcadenas[]={cadena1,cadena2};
oinicializarsolamenteelnmerodeelementos
Stringcadenas[]=newString[2];
4.6.Arrays
(2/2)
Lasposicionesvande0alnmerodeeltosmenosuno
Aloselementosseaccedeporndice:
cadenas[2]=cad1;
Parasabersulongitudseutilizaelatributolength:
intlogitud=cadenas.length;
Paracopiarunarraypodemosutilizar:
System.arraycopy(oriben,iniceorigen,destino,indicedestino,num
eroelementos)
Arraysmultidimensionales:
intmatriz[][]=newint[10][10];
4.7.Trabajandoconcadenasde
caracteres
Lascadenassonsecuenciasdecaracteres
SeutilizalaclaseString
Sepuedenconcatenarconeloperador+
CualquierobjetossepuedeconvertiraString
intedad=27;
Stringinforme=Laedades+edad;
Paracompararcadenasseutilizaelmtodoequals()o
equalsIgnoreCase()
EnelAPIhaymuchasfuncionestiles(substring,length,...)
4.8.Resumen
Parainstanciarunaclaseseutilizanew
Paraaccederasuspropiedadesymtodosseutilizala
notacindepuntos
Elconstructoresunmtodoespecialparainicializarunobjeto
Sepuedeutilizarlaconversindetipos(casting)
UnarrayesunacoleccindeobjetosordenadosyenJavase
unObjeto
TodaslascadenasdecaracteressoninstanciasdeString
5.ManejodeClases,MtodosyVariables
(1/2)
5.1.Introduccin
5.2.TiposdeVariables
5.3.Alcancedelas
Variables
5.4.Modificadores
5.5.ControldeAcceso.
Tiposdeproteccin
5.6.Finalizacinde
clases,mtodosy
variables
5.7.Mtodos
5.8.Pasandoargumentos
desdelalneade
comandos
5.ManejodeClases,MtodosyVariables
(2/2)
5.9.Mtodosdeclasee
instancia
5.14.Superposicinde
Mtodos
5.10.Anlisisdelmtodo 5.15.Sobrecargade
main
constructores
5.11.Polimorfismo
5.12.ThisySuper
5.13.Sobrecargade
Mtodos
5.16.Superposicinde
constructores
5.17.Resumen
5.1.Introduccin
Veremosque,segnsuubicacinenelcdigo,existen
variostiposdemtodosyvariablesconuntipouotro
dealcance
Estudiaremoselcontroldeaccesoaclases,mtodosy
variables
Veremosladefinicinformaldemtodos
Explicaremoselconceptodepolimorfismo
5.2.TiposdeVariables
Local:dentrodeladefinicindeunmtodo.Slo
vlidaparaelcdigocontenidoenesemtodo
DeInstancia:sedeclaranfueradelosmtodos
(generalmentealprincipio).Vlidaparatodala
instancia(sepuedeusardesdecualquiermtodo)
DeClase:sedeclaraalprincipiodelaclase.Vlida
paratodaslasinstancias.Seutilizalapalabra
reservadastaticensudefinicin
5.3.AlcancedelasVariables
Alcance=zonadelcdigodondesepuedeusar
Alllamaraunavariable:
Javabuscaladefinicinenelmbito(bloque)
actual,comopuedeserunbucle
Sinolaencuentravasubiendohastallegarala
definicindelmtodo(variablelocal)
Sinolaencuentrabuscaunadeinstanciaode
clase
Sinolaencuentrasubealasuperclaseabuscarla
5.4.Modificadores
Sonpalabrasreservadasquepermitenmodificarladefiniciny
elcomportamientodelasclases,mtodosyvariables
Losmsimportantes:
public,protected,privateparaelcontroldeacceso
staticparacrearmtodosyvariablesdeclase
abstractparacrearclase,mtodosyvariablesabstractas
finalparaindicarquefinalizalaimplementacindeuna
clase,mtodoovariable
5.5.ControldeAcceso.Tiposde
proteccin
Elcontroldeaccesoserefierealavisibilidaddeuna
clase,variableomtodo.
Encapsulacin
Cuatronivelesdeproteccin:
pblico
paquete
protegido
privado
5.5.1.ProteccinFriendlyodePaquete
Sonvisiblesatodaslasdemsclasesdelmismo
paquete,peronofueradel
Eslaproteccinpordefectocuandonoseespecifica
5.5.2.ProteccinPblica
Sonvisiblesatodaslasdemsclases,dentroofuera
delaclaseopaqueteactual
Seutilizalapalabrareservadapublic
NOTA:cuandotengamosmsdeunadefinicinde
claseenelmismoarchivojava,solamenteunade
ellaspodrserpblicayelarchivojavadeber
llamarseigualqueesaclase
5.5.3.ProteccinPrivada
Sonaccesiblesnicamentepormtodosdelamisma
clase.
Seutilizalapalabrareservadaprivate
Existeuntipoespecialdeclasesquepuedenser
privadas,lasclasesinternas
5.5.3.1.ClasesInternas
Esaquellaqueestdefinidadentrodeotraclase
Puedenaccederalaimplementacindelaclase
creadora(incluyendolosprivados)
Puedenocultarseaotrasclasesdelmismopaquete
classClasePrincipal{
privateatributo1;
publicmetodo(){}
privateclassClaseInterna{
//desdeaqupodemosaccederaatributo1
}
}
5.5.4.ProteccinProtegida
Sonaccesiblesportodaslasclasesdentrodelpaquete
yporsussubclases,aunqueestnfueradel
Seutilizalapalabrareservadaprotected
5.6.Finalizacindeclases,mtodosy
variables
Lafinalizacinpermitebloquearlaimplementacinde
unaclase,variableomtodo.
Seespecificautilizandolapalabrareservadafinal
generalmenteacontinuacindeunmodificadorde
proteccin.
5.6.1.Finalizacindevariable
Seconvierteenunaconstante
finalinta=6;
5.6.2.Finalizacindemtodo
Evitaqueunmtodopuedasersuperpuesto
publicfinalvoidmetodoInmutable(){}
Lautilizacindemtodosfinalesaceleralaejecucin
delprogramaporqueelcompiladornotieneque
buscarladefinicindeesemtodoenlassubclases
5.6.3.Finalizacindeclase
Evitaqueunaclasetengasubclases
publicfinalclassClaseFinal{}
ElAPIJavatieneclasesfinalesparaevitarquese
puedanextender
Salvoporeficiencianoloharemos
5.7.Mtodos
(1/2)
Definenlafuncionalidaddeunobjeto
Constande:
unoovariosmodificadores(public,static,final,etc)
elObjetooTipoPrimitivoquedevuelve
elNombredelmtodo
unconjuntodeParmetros
lapalabrareservadathrows(severmsadelante)
elCuerpodelmtodo
5.7.Mtodos
(2/2)
Firma(signature)delmtodo:nombredelmtodo+
conjuntodeparmetros
Cuandounmtodonodevuelvenadadebe
especificarseeltipovoid
Pasodeparmetros:
Lostiposprimitivossepasanporvalor
Losobjetossepasanporreferencia
5.8.Pasandoargumentosdesdela
lneadecomandos
publicstaticvoidmain(Stringargs[]){...}
args.length:Nmerodeargumentos
args[0]:Primerargumento
if(args[0].equals(version))...
5.9.Mtodosdeclaseeinstancia
Losmtodosdeclaseestndisponiblesparacualquier
instanciadeesaclaseoparaotrasclases,
independientementedesiexiste,ono,una
instanciadeesaclase
publicstaticintcalculaDerivada(Stringecuacion){}
doublecoseno=Math.cos(Math.PI);
5.10.Anlisisdelmtodomain
Entodaaplicacin,almenosdebedeexistirunaclaseque
tengaunmtodomain
publicstaticvoidmain(Stringargs[])
public:elmtodomaindebeestaraccesibledesdefueradela
claseparapoderinvocarloalarrancarlaaplicacin
static:esunmtododeclase,estdisponible
independientementedequeestonoinstanciadalaclase
void:nodevuelvenada
main:siempresellamaas(yaseexplicaronlosparmetros
delalneadecomandos)
5.11.Polimorfismo
Eslacapacidaddeutilizarunobjetodeunasubclase
comosifueraunobjetodelaclasebase
Permiteescribircdigoquedesconoceparcialmente
lascaractersticasdelosobjetosconlosquetrabaja
(cdigodesacoplado)
5.12.ThisySuper
Relacionadasconlaherenciayelalcancedelas
variables
this:permitereferirsealasvariablesymtodosdela
instanciaascomopasarelpropioobjetocomo
argumento
super:similarathis,peroserefierealasuperclasedel
objeto
5.13.SobrecargadeMtodos
Consisteencrearvariosmtodosconelmismo
nombreperocondistintasfirmas(signature)o
definiciones
5.14.SuperposicindeMtodos
Sonmtodosdesubclasesconlamismafirmaquelos
correspondientesdelasuperclase
Permiteamplicarlafuncionalidaddelosmtodosdela
superclase
Java,aligualqueconlasvariables,buscarprimeroel
mtodoenlaclaseysinoloencuentrasubira
buscarloalasuperclase
Parallamaralaimplementacindelasuperclase:
super.metodo(parametros);
5.15.Sobrecargadeconstructores
Seutilizaigualqueelrestodemtodos
Sinosedefineningnconstructor,existeel
constructorpordefecto(sinparmetros)
Sisedefinealgnconstructor,nicamenteestn
disponibleslosdefinidos(yanoestelconstructorpor
defectosinosedefineexplcitamente)
Paraejecutarunconstructordesdeotro:
this(parametros);
5.16.Superposicindeconstructores
Comolosconstructoresdebentenerelmismonombre
delaclaseesimposiblerealizarlasuperposicin
Peropodemosaprovecharelconstructordelaclase:
super(argumentos);
5.17.Resumen
Tiposdevariables:locales,deinstanciaydeclase
Modificadores:modificanladefinicinycomportamiento.Destacanlosde
controldeacceso(public,private,protectedyfriendly)
Finalizacin:permitebloquearlaimplementacin
Firma:tipodevuelto+nombremtodo+parmetros
Polimorfismo:usarunobjetodesubclasecomosifuesedelaclasebase(cdigo
desacoplado)
this:serefierealobjetoactual
super:serrefierealasuperclase
sobrecarga:variosmtodosconelmismonombreperodistintafirma
superposicin:permiteredefinirlosmtodosenlassubclases
6.ConceptosAvanzadosdeJava
6.1.Introduccin
6.4.Interfaces
6.2.Abstraccindeclases 6.5.EntradaSalida(E/S)
ymtodos
6.6.Resumen
6.3.Excepciones
6.1.Introduccin
Enestecaptuloveremoslaabstraccindeclases,las
interfaces,elcontrolygestindeinterrupcionesyla
entradasalida(E/S)
6.2.Abstraccindeclasesymtodos
(1/2)
Clasesabstractas:
nopuedentenerinstancias
sirvendereferencias
generalmenteenlapartesuperiordelajerarquadeclases
deJava.
puedencontenermtodosconcretosyabstractos
Mtodosabstractos:
firmadelmtodonicamente,sinsuimplementacin
nopuedenexistirfueradeunaclaseabstracta
6.2.Abstraccindeclasesymtodos
(2/2)
Siunaclasecontieneunmtodoabstractodeberser
definidacomoabstracta
Parasudefinicinseanteponeabstract
Sirvenparaobligaraquelassubclasesimplementen
losmtodos
6.3.Excepciones
Sirvenparapermitiraunprogramarecuperarsedelos
erroresdeunaformaelegante
Permitenalosprogramassertolerantesafallos
Lasexcepcionessonclases(ExceptionyError
heredandeThrowable)
6.3.1.Capturadeexcepciones
(1/2)
Todaslasexcepcionesheredandejava.lang.Exception
Elcdigosusceptibledegenerarexcepcionesseencierra
entretryycatch
catchadmitecomoparmetroeltipodeexcepcinacapturar
finally:esunbloqueopcionaldespusdelcatch.Permite
realizartareasquedebenserejecutadasindependientemente
delcomportamientodeerrores(comocerrarunaconexinde
basededatos)
6.3.1.Capturadeexcepciones
(2/2)
try{
//CdigoquepuedagenerarErrores("Exception's")
}catch(Tipo1id1){
//Manejar"Exception's"paralaClaseTipo1
}catch(Tipo2id2){
//Manejar"Exception's"paralaClaseTipo2
}catch(Tipo3id3){
//Manejar"Exception's"paralaClaseTipo3
}finally{
//Actividadesquesiempreocurren
}
6.3.2.LanzandoExcepciones
(1/2)
Enlafirmadelmtododebeespecificarselaolas
excpcionesquepuedelanzarutilizandolapalabra
reservadathrows
Dentrodelcuerpodelmtodoselanzarnutilizandola
palabrareservadathrow
6.3.2.LanzandoExcepciones
(2/2)
publicStringleerFichero(Stringfichero)throws
IOException,FileNotFoundException{
...
thrownewFileNotFoundException(Noseha
encontradoelarchivo);
}
6.3.3.Creandonuestraspropias
excepciones(1/2)
publicclassMiExcepcionextendsException{
publicMiExcepcion(){}
publicMiExcepcion(Stringmensaje){
super(mensaje);
System.out.println(Saliendodelsistema);
//Otrasacciones
}
}
6.3.3.Creandonuestraspropias
excepciones(2/2)
classUsoDeExcepciones{
voidfuncion(inta)throwsMiExcepcion{
if(a==1)thrownewMiExcepcion(Sehaproducidouna
excepcinpropia.);
}
publicstaticvoidmain(Stringargs[]){
UsoDeExcepcionesuso=newUsoDeExcepciones();
try{
uso.funcion(1);
}catch(MiExcepcionm){
System.out.println(Excepcin:+m.getMessage());
}
}
}
6.3.4.Transfiriendoexcepciones
classUsoDeExcepciones2{
voidfuncion(inta)throwsMiExcepcion{
if(a==1)thrownewMiExcepcion(error);
}
voidpasarMarron(intvar)throwsMiExcepcion{
funcion(var);//Otrocdigo
}
publicstaticvoidmain(Stringargs[]){
UsoDeExcepciones2uso=newUsoDeExcepciones2();
try{
uso.pasrMarron(1);
}catch(MiExcepcionm){
System.out.println(m.getMessage());
}
} }
6.4.Interfaces
(1/2)
Solucinalaherenciasimple
Interfaz:Claseenlaquesoloseespecificacomportamiento,
nicamentesedefinenfirmasdemtodosyconstantes
Sedicequeunaclaseimplementaunainterfazcuando
implementatodossusmtodos(estobligada)
Paradefinirunainterfaz,seanteponelapalabrainterfaceal
nombredelaclase
Solamentepuedenserpblicasoconproteccindepaquete
Losmtodossonpublicyabstract(noseespecifica)
Lasvariablessonpublic,staticyfinal(noseespecifica)
6.4.Interfaces
(2/2)
Nosepuedencrearinstanciasdeunainterfaz(aligualqueenlas
clasesabstractas)
Unainterfazpuedeheredardeunaovariasinterfaces(extends
Interfaz1,Interfaz2)herenciamltipledeinterfaces.
Laimplementacinseindicaconimplements(similaralextends
delaherencia).Mltiplesimplementacionesseseparanporcomas
Lasubclasedeunaclasequeimplementaunainterfaz,tambin
implementalainterfaz
6.5.EntradaSalida(E/S)
LaclaseSystem:
clasefinal(nosepuedeinstanciar)delpaquetejava.lang
in:flujodeentrada(InputStream)
err:flujodondeseredireccionanloserrores(OutputStream)
out:flujodesalida(OutputStream)
Salidaporpantalla
System.out.println();
Entradaporteclado
Stringtexto=(newBufferedReader(new
InputStreamReader(System.in))).readLine();
6.6.Resumen
Lasclasesymtodosabstractosnopueden
instanciarse.Seutilizaelmodificadorabstract
CuandounprogramaJavafallalanzaexcepciones.
Capturndolasmediantetrycatchpodemoscrear
cdigotoleranteafallos
Lasinterfacessonclasesqueespecificanun
comportamiento
JavaposeefuncionesdeE/S