1. PREGUNT PREGUNTA: A: ¿Una ¿Una clase clase puede puede manejar manejar objetos? objetos? RESPUESTA RESPUESTA Sí una clase puede manejar objetos. Aun!ue esta "rase es bastante amb#$ua apr%ndetela de memor#a para el e&amen ' no le des m(s )ueltas.
*. PREGUNT PREGUNTA: A: ¿Pueden ¿Pueden crears crearse e objetos del del t#po de"#n#do de"#n#do por una clase s#n constructor declarado? RESPUESTA: RESPUESTA: Sí en caso de !ue no +a'a constructor declarado ja)a apl#ca por de"ecto el cr#ter#o de perm#t#r la creac#,n de objetos como s# est#era el constructor )acío -s#n c,d#$o.
/. PREGUNT PREGUNTA: A: ¿Una clase clase puede puede tener como como nombre nombre un n0mero n0mero o su nombre empear por un n0mero? RESPUESTA: No. Al #$ual !ue no es )(l#do !ue el nombre de una )ar#able emp#ece con un n0mero tampoco el nombre de una clase puede empear con un n0mero.
PREGUNTA: Dado este fragmento de código, ¿cuál sería s ería el resultado res ultado de 2. PREGUNTA: comilarlo ! e"ecutarlo# Código: $%eleccionar&
public static void main (String Args[] ) { int valor = 5; cambiarValor(valor); System.out.println System.out.println (valor); public static void cambiarValor (int valor) { private int valor = valor ! ";
RE%PUE%TA: RE%PUE%TA: 'emos de suoner (ue el código está dentro de una clase, clase , or(ue si no no se uede comilar ni e"ecutar) El resultado es error en la línea *+ or(ue dentro de un mtodo no ueden declararse -aria.les locales recedidas de modificadores de acceso /u.lic!ri-ate!rotected0
3. PREGUNT PREGUNTA: A: ¿Este ¿Este c,d#$o c,d#$o comp#la ' s# comp#la comp#la !u% sent#d sent#do o t#ene? t#ene? pr#)ate class 4#5lase1 6 7 RESPUESTA: RESPUESTA: No el c,d#$o no comp#la. Solo se adm#te publ#c. Podría comp#lar s# se tratara de una clase #nterna dentro de otra clase pero tal ' como est( no.
8. PREGUNT PREGUNTA: A: ¿Este ¿Este c,d#$o c,d#$o comp#la ' s# comp#la comp#la !u% sent#d sent#do o t#ene? t#ene? protected class 4#5lase1 6 7
RESPUESTA: RESPUESTA: No el c,d#$o no comp#la. Solo se adm#te publ#c. Podría comp#lar s# "uera una clase #nterna a otra clase.
PREGUNTA: ¿Este código comila 1 si comila, (u sentido tiene# 9. PREGUNTA: Código: $%eleccionar&
class #i$lase% { class #i$lase" { class #i$lase& {
RE%PUE%TA: RE%PUE%TA: %í, el código c ódigo comila) 2a clase se denomina con el nom.re de la rimera declaración (ue aare3ca, es decir: 4i5lase*) %i 6a1 -arias clases en un mismo fic6ero, "a-a sólo ermite (ue se ueda usar una de ellas desde código (ue est fuera del fic6ero) 4i5lase* define un tio) Al no declararse usando u.lic, el comilador le da -isi.ilidad dentro del ac7age en (ue est definida) El resto de clases (ue se declaran tienen consideración de clases solo accesi.les or otras clases dentro del fic6ero)
. PREGUNT PREGUNTA: A: ¿Este ¿Este c,d#$o c,d#$o comp#la ' s# comp#la comp#la !u% sent#d sent#do o t#ene? t#ene? class 4#5lase1 6 7
publ#c class 4#5lase* 6 7 class 4#5lase/ 6 7 RESPUESTA: Sí el c,d#$o comp#la. ;a clase -arc+#)o se denom#na con el nombre de la clase !ue se declara como p0bl#ca es dec#r: 4#5lase*. ;as otras clases se cons#deran clases pr#)adas dentro de esta clase. <. PREGUNTA: ¿Este c,d#$o comp#la ' s# comp#la !u% sent#do t#ene? publ#c class 4#5lase1 6 7 publ#c class 4#5lase* 6 7 class 4#5lase/ 6 7
RESPUESTA: No el c,d#$o no comp#la. El comp#lador no sabe !u% nombre ponerle a la clase s# se declaran dos nombres como p0bl#co. En un arc+#)o se pueden de"#n#r )ar#as clases pero en un arc+#)o no puede +aber m(s !ue una clase publ#c. Este arc+#)o se llamar( como la clase publ#c !ue cont#ene con e&tens#,n =.ja)a. 5on e&cepc#ones lo +ab#tual es escr#b#r una sola clase por arc+#)o. 1>.PREGUNTA: ¿Este c,d#$o comp#la ' s# comp#la !u% sent#do t#ene? publ#c class 4#5lase1 6 7 class 4#5lase1 67 RESPUESTA: No el c,d#$o no comp#la. En un "#c+ero no puede +aber dos clases con el m#smo nombre. 11.PREGUNTA: ¿Este c,d#$o comp#la ' s# comp#la !u% sent#do t#ene? publ#c class 4#5lase1 6 pr#)ate 4#5lase* prueba ne@ 4#5lase*- publ#c )o#d mostrar4#5lase1 - 6 S'stem.out.pr#ntln -prueba.$et5onten#do- 7 7 class 4#5lase* 6 Str#n$ so'* BCola so' *B publ#c Str#n$ $et5onten#do- 6 return so'* 7 7 class 4#5lase/ 6 4#5lase1 pp 4#5lase* jj
7 RESPUESTA: Sí el c,d#$o comp#la. El "#c+ero lle)a el nombre de la clase p0bl#ca. ;as otras clases dentro del "#c+ero se conocen entre sí pero no pueden ser usadas "uera del "#c+ero. 1*.PREGUNTA: Dado este "ra$mento de c,d#$o ¿cu(l ser( su sal#da? class 5antante 6 publ#c stat#c Str#n$ cantar- 6 return BlaB 7 7 publ#c class Tenor e&tends 5antante 6 publ#c stat#c Str#n$ cantar - 6 return B"aB 7 publ#c stat#c )o#d ma#n -Str#n$ F ar$s 6 Tenor t ne@ Tenor - 5antante s ne@ Tenor - S'stem.out.pr#ntln -t.cantar - B B s.cantar- 7 7 RESPUESTA: Do re m# "a solH !u% s#mp(t#ca la pre$unta. Iu% derroc+e de #ma$#nac#,n ' s#mpatía. Jeamos el "ondo del asunto. Pr#mera cuest#,n: El "#c+ero lle)a el nombre de la clase p0bl#ca. ;a otra clase no es conoc#da "uera del "#c+ero. Al crear un Tenor no ocurre nada puesto !ue no +a' constructor n# campos. El m%todo cantar de Tenor es est(t#co: esto s#$n#"#ca !ue es un m%todo de clase ' !ue se puede #n)ocar tanto sobre un objeto como sobre el nombre de la clase. Kdem para el m%todo cantar de 5antante. Aun!ue parece !ue +a' una sobreescr#tura de m%todos en real#dad no la +a': un m%todo est(t#co no es sobreescr#b#ble ' no "unc#ona la l#$adura d#n(m#ca de m%todos. S# el m%todo de la superclase "uera est(t#co ' el de la subclase no saltaría un error Lo)err#dden met+od #s stat#cM. Al crear un 5antante s con t#po Tenor el t#po est(t#co es 5antante ' el d#n(m#co Tenor. Al #n)ocar el m%todo cantar sobre t se nos de)uel)e "a ' al #n)ocar cantar sobre s dado !ue s d#spone de un m%todo est(t#co de s nombre se ejecuta ' de)uel)e la. Por tanto la sal#da es : "ala 1/. PREGUNTA: ¿8u se o.tiene al e"ecutar el siguiente código# u.lic class 4i5lase* 9 ri-ate 4i5lase rue.a; u.lic -oid mostrar4i5lase* /0 9 %1stem)out)rintln /rue.a0; < < class 4i5lase 9
%tring so1 = >'ola so1 >; < RE%PUE%TA: ?.tenemos como salida or antalla: null) ¿Por (u# Por(ue el atri.uto rue.a, (ue es un o."eto, no está iniciali3ado, sino solo declarado) %i lo iniciali3áramos con una declaración como ri-ate 4i5lase rue.a = ne@ 4i5lase/0; la salida or antalla sería del tio 4i5lase*BCea ¿Por (u# Por(ue estamos idiendo la salida or antalla de un o."eto, 1 lo (ue nos sale es la referencia de memoria de dónde se encuentra alo"ado el o."eto) Usando %1stem)out)rintln /rue.a)to%tring/00; el resultado sería el mismo) Para rescatar el contenido 'ola so1 necesitaríamos un mtodo get e in-ocar este mtodo) Por e"emlo: u.lic %tring get5ontenido/0 9 return so1; <, 1 en la otra clase %1stem)out)rintln /rue.a)get5ontenido/00; 12.PREGUNTA: ¿Iu% se obt#ene al ejecutar el s#$u#ente c,d#$o?
class Je+#culo 6 publ#c )o#d #mpr#m#rSon#do- 6 S'stem.out.pr#nt-BJe+#culoB 7 7 class 5oc+e e&tends Je+#culo 6 publ#c )o#d #mpr#m#rSon#do- 6 S'stem.out.pr#nt -BO#c#cletaB 7 7 class O#c#cleta e&tends Je+#culo 6 publ#c )o#d #mpr#m#rSon#do- 6 S'stem.out.pr#nt -BO#c#cletaB 7 7 publ#c class Test 6 publ#c stat#c )o#d ma#n -Str#n$ F ar$s 6 Je+#culo ) ne@ 5oc+e- O#c#cleta b -O#c#cleta ) ).#mpr#m#rSon#do- b.#mpr#m#rSon#do- 7 7 RESPUESTA: El c,d#$o comp#la pero se produce una e&cepc#,n en t#empo de ejecuc#,n. El error nos #nd#ca ja)a.lan$.5lass5astE&cept#on: 5oc+e cannot be cast to O#c#cleta at Test.ma#n-Test.ja)a:**. Esto est( relac#onado con con)ers#ones de t#po perm#t#das ' no perm#t#das. Tanto coc+e como b#c#cleta +eredan de )e+#culo podríamos dec#r !ue
coc+e ' b#c#cleta Bson +ermanosB. El c,d#$o comp#la por!ue un )e+#culo podría contener una b#c#cleta -pol#mor"#smo de )e+#culo. S#n embar$o en t#empo de ejecuc#,n lo !ue realmente cont#ene ) es un coc+e. El resultado !ue se detecta un #ntento de con)ers#,n de lado a lado -entre +ermanos ' nos salta el error en t#empo de ejecuc#,n. Oueno no s% s# lo +e e&pl#cado mu' claro pero por lo menos lo +e #ntentado. 13.PREGUNTA: ¿Iu% ocurre al ejecutar el s#$u#ente c,d#$o? class Padre 67 class C#jo e&tends Padre 67 class C#jo* e&tends Padre 67 publ#c class 5E& 6 publ#c stat#c )o#d ma#n -Str#n$ F ar$s 6 Padre p ne@ Padre- C#jo + -C#jo p 7 7 RESPUESTA: No sabemos s# lo de -C#jo p t#ene al$0n doble sent#do. El c,d#$o comp#la 'a !ue el comp#lador no lle$a a conocer el t#po !ue almacena la )ar#able p. En t#empo de ejecuc#,n para +acer el cast#n$ C#jo + -C#jo p sería necesar#o !ue p almacenara d#n(m#camente una )ar#able t#po C#jo. 5omo no es el caso salta un error en t#empo de ejecuc#,n t#po ja)a.lan$.5lass5astE&cept#on: Padre cannot be cast to C#jo. Este c,d#$o sí comp#la ' se ejecuta: class Padre 67 class C#jo e&tends Padre 67 class C#jo* e&tends Padre 67 publ#c class Pre$5E& 6 publ#c stat#c )o#d ma#n -Str#n$ F ar$s 6 Padre p ne@ C#jo- C#jo + -C#jo p 7 18.PREGUNTA: ¿Iu% ocurre al ejecutar el s#$u#ente c,d#$o? publ#c )o#d $oo- 6 "oo " ne@ "oo- S'stem.out.pr#ntln -" 7 publ#c class "oo 6 Str#n$ " B**B publ#c Str#n$ toStr#n$- 6 return B22B
7 publ#c "oo- 67 7 RESPUESTA: Error de comp#lac#,n: un m%todo no puede estar "uera de una clase como al$o #ndepend#ente. 19.PREGUNTA: ¿5u(l sería el resultado de ejecutar el m%todo $oo? publ#c )o#d $oo- 6 "oo " ne@ "oo- S'stem.out.pr#ntln -" 7 publ#c class "oo 6 Str#n$ " B**B publ#c Str#n$ toStr#n$- 6 return B22B 7 publ#c "oo- 67 7 RESPUESTA: Esta pre$unta es un enunc#ado #n#ntel#$#ble 'a !ue no !ueda claro d,nde est( el m%todo ' s#n saber d,nde est(H De todas "ormas se cons#dera !ue +a' !ue suponer !ue al no pre$untar por la ejecuc#,n del c,d#$o s#no del m%todo tenemos !ue cons#derar !ue estu)#era dentro de la claseH S# el m%todo estu)#era dentro de la clase sí comp#laría ' el resultado de ejecutar el m%todo sería: 22. Esto es así por!ue en el pr#ntln lo !ue se ejecuta es el m%todo toStr#n$-. al tener sobreescr#to el m%todo toStr#n$- para !ue de)uel)a 22 esto es lo !ue obtenemos. A esta pre$unta +a' !ue reconocerle m%r#to: ole la mente br#llante a la !ue se le ocurr#,. 1.PREGUNTA: Estud#a el c,d#$o !ue se muestra a cont#nuac#,n. ¿5omp#la este c,d#$o? publ#c class Pre$13 6 publ#c )o#d prueba - 6 tr' 6 #nt )ar#able;ocal 33 7 catc+ -Ar#t+met#cE&cept#on e 6 S'stem.out.pr#ntln- )ar#able;ocal 7 "#nall' 6 7 7 7 RESPUESTA: No una )ar#able local declarada dentro de un blo!ue tr' catc+ no es conoc#da n# en el catc+ n# en el "#nall'. En resumen s# la
)ar#able est( declarada "uera del blo!ue tr' sí se puede usar en el catc+ o en el "#nall'. S# est( dentro del blo!ue tr' nos saltar( un error de comp#lac#,n. 1<.PREGUNTA: ¿5omp#la este c,d#$o? publ#c class Pre$13 6 publ#c )o#d prueba - 6 #nt )ar#able;ocal 33 tr' 6 7 catc+ -Ar#t+met#cE&cept#on e 6 S'stem.out.pr#ntln- )ar#able;ocal 7 "#nall' 6 7 7 7 RESPUESTA: Sí una )ar#able local declarada "uera de un blo!ue tr' catc+ es conoc#da dentro del catc+ ' tamb#%n dentro del "#nall'.
*>.PREGUNTA: Dadas estas declarac#ones de )ar#ables #nd#car cu(les son correctas ' cu(les no: "loat "oo 1 "loat "oo1 1.> "loat "oo* 2*e1 "loat "oo/ *.>*" "loat "oo2 /.>/d "loat "oo3 >&>1*/ double "oo8 /.>/d double "oo9 >&>1*/ double "oo >&>1*/23 double "oo< >&>1*/2389 double "oo1> >&>1*/2389<
RESPUESTA: "loat "oo 1 QQ Sí comp#la declarac#,n correcta QQ"loat "oo1 1.> No comp#la Error: poss#ble lost o" prec#ss#on: "ound double re!u#red "loat QQ"loat "oo* 2*e1 No comp#la: Error: poss#ble lost o" prec#ss#on: "ound double re!u#red "loat "loat "oo/ *.>*" QQ Sí comp#la declarac#,n correcta QQ"loat "oo2 /.>/d No comp#la: Error: poss#ble lost o" prec#ss#on: "ound double re!u#red "loat
"loat "oo3 >&>1*/ QQ Sí comp#la declarac#,n correcta double "oo8 /.>/d QQ Sí comp#la declarac#,n correcta double "oo9 >&>1*/ QQ Sí comp#la declarac#,n correcta double "oo >&>1*/23 QQ Sí comp#la declarac#,n correcta double "oo< >&>1*/2389 QQ Sí comp#la declarac#,n correcta QQ double "oo1> >&>1*/2389< No comp#la. Error: #nte$er number >1*/2389< too lar$e Nota: una re"erenc#a a una pos#c#,n de memor#a +a de empear con >& se$u#da de +asta < dí$#tos. No se adm#te otra "orma de e&presar una re"erenc#a a una pos#c#,n de memor#a. *1.PREGUNTA: Dado el s#$u#ente c,d#$o ¿cu(l es el conten#do de la )ar#able "oo? #nt #nde& 1 boolean F test ne@ boolean /F boolean "oo test #nde&F S'stem.out.pr#ntln -"oo
RESPUESTA: El conten#do es "alse. 4ot#)o: desde !ue se crea un arra' con la #nstrucc#,n ne@ !ueda relleno en todas sus pos#c#ones con cero para )alores num%r#cos "alse para booleanos null para objetos #nclu#do str#n$s o car(cter nulo para t#po c+ar. **.PREGUNTA: Dado el s#$u#ente c,d#$o ¿cu(l es el conten#do de la )ar#able c? c+ar c > S'stem.out.pr#ntln -c RESPUESTA: El conten#do es el car(cter nulo. No t#ene representac#,n por pantalla al #$ual !ue el str#n$ nulo LM no t#ene representac#,n por pantalla. */.
PREGUNTA: ¿8u de-uel-e esta eFresión en a-a#
/*H*0 II /* H *0 == /* H *0 == false RE%PUE%TA: E-aluemos or artes: false II false == false == false; false II false = false; false == false; JJH -ale true; true == false; JJH -ale false;
Luego la expresión devuelve false
*2.PREGUNTA: ¿Iu% de)uel)e esta e&pres#,n en a)a? -1 1 V -1> 1 true V true true RESPUESTA: E)aluemos por partes: 1 1 de)uel)e true 1> 1 de)uel)e true true V true true V true true true true V true true true V true ;ue$o la e&pres#,n de)uel)e true ;a d#"erenc#a entre VV ' V es !ue con VV se deja de e)aluar la e&pres#,n desde !ue es )erdadero el pr#mer caso m#entras !ue con V se e)alua tamb#%n el se$undo caso.
*3.PREGUNTA: Dado el s#$u#ente c,d#$o ja)a ¿5u(l es su resultado? class Top 6 publ#c Top -Str#n$ s 6 S'stem.out.pr#nt -BOB 7 7 publ#c class Oottom* e&tends Top 6 publ#c Oottom* -Str#n$ s 6 S'stem.out.pr#nt -BDB 7 publ#c stat#c )o#d m#an -Str#n$ F ar$s 6 Oottom* obj ne@ Oottom*-B5B S'stem.out.pr#ntln -B B 7 7 RESPUESTA: Se obt#ene un error de comp#lac#,n deb#do a !ue el constructor de Oottom* cont#ene #nstrucc#ones ' om#te la #nstrucc#,n super-s es dec#r no se #nclu'e el c,d#$o necesar#o para !ue al constru#r un objeto de la clase Oottom* se ejecute pre)#amente el constructor de Top. S# la #nclu'era el c,d#$o de)ol)ería OD. S#empre es obl#$ator#o super-par(metros e&cepto cuando este un constructor de la clase super#or s#n par(metros. En este caso escr#b#ríamos super- pero s# no lo #nclu#mos el comp#lador lo +ar( autom(t#camente e)#tando !ue salte un error.
*8.PREGUNTA: Dado el s#$u#ente c,d#$o ja)a ¿5u(l es su resultado? class Cotel 6 publ#c #nt reser)as publ#c )o#d reser)ar- 6 reser)as 7 7 publ#c class SuperCotel e&tends Cotel 6 publ#c )o#d reser)ar- 6reser)as7 publ#c )o#d reser)ar -#nt s#e 6 reser)ar- super.reser)ar- reser)as s#e 7 publ#c stat#c )o#d ma#n -Str#n$ F ar$s 6 SuperCotel +otel ne@ SuperCotel- +otel.reser)ar-* S'stem.out.pr#nt -+otel.reser)as 7 7
RESPUESTA: Por carecer ambas clases de constructor no +a' problema. Al crear el objeto ' man#pular una )ar#able !ue no +a s#do #n#c#al#ada -mala pr(ct#ca pero comp#lable ' ejecutable s#n error la )ar#able opera con su )alor por de"ecto !ue en el caso de un #nt es cero. El resultado del m%todo reser)ar -#nt s#e es !ue la )ar#able reser)as se #ncrementa en lo !ue #nd#ca s#e. Por tanto el resultado de la ejecuc#,n es *.
*9.PREGUNTA: ¿5u(l es la de"#n#c#,n de depurac#,n? RESPUESTA: B;a depurac#,n es el #ntento de apuntar con prec#s#,n ' corre$#r un error en el c,d#$oB. AWad#remos !ue esto es una de"#n#c#,n un tanto crípt#ca ' amb#$ua pero no le des muc+as )ueltas. Apr%ndetela para el e&amen ' punto.
*.PREGUNTA: D#$a s# es c#erto o "also: a El encapsulam#ento reduce la co+es#,n. b El encapsulam#ento reduce el acoplam#ento.
RESPUESTA: a Xalso b Jerdadero
*<.PREGUNTA: ¿Son las llamadas a m%todos en ja)a pol#m,r"#cas? RESPUESTA: Sí. Dec#mos !ue sí en el sent#do de !ue un m%todo sobreescr#to en una subclase #mpl#ca !ue una #n)ocac#,n al m%todo pueda #n)ocar al m%todo de la subclase o al de la superclase depend#endo del t#po d#n(m#co de la )ar#able.
/>.PREGUNTA: ¿5u(l es el nombre del "#c+ero ja)a ' de la clase se$0n este c,d#$o? class Oase5lass 6 pr#)ate "loat & 1.>" protected "loat $etJar - 6 return & 7 7 class Subclass e&tends Oase5lass 6 pr#)ate "loat & *.>" 7
RESPUESTA: El nombre es Oase5lass. A "alta de espec#"#cac#,n de una clase como publ#c s#empre se co$e como nombre el nombre de la pr#mera clase !ue apareca.
/1.A+í )amos con otra. PREGUNTA: ¿Iu% dos "ormas +a' de sobreescr#b#r el m%todo $etJar- de"#n#do en el c,d#$o dentro de la subclase? class Oase5lass 6 pr#)ate "loat & 1.>" protected "loat $etJar - 6 return & 7 7 class Subclass e&tends Oase5lass 6 pr#)ate "loat & *.>" 7
El m%todo lle)a como mod#"#cador de acceso protected lo !ue s#$n#"#ca !ue es )#s#ble en la clase el pacYa$e ' por las subclases. Protected podríamos dec#r !ue es cuas#p0bl#co. Para reescr#b#rlo +emos de usar un mod#"#cador #$ual o !ue d% ma'or acceso. Por tanto +a' dos "ormas de rede"#n#rlo: a protected "loat $etJar- 6return &7 b publ#c "loat $etJar- 6return &7 ;as "ormas s#n mod#"#cador ' pr#)ate son m(s restr#ct#)as ' por tanto no pueden usarse para sobreescr#b#r el m%todo.
/*.PREGUNTA: ¿5u(l es la de"#n#c#,n de pro$ramac#,n de"ens#)a pro$ramac#,n e&trema ' pro$ramac#,n por parejas?
RESPUESTA: 'o en pareja pre"#ero +acer otras cosas !ue no son pro$ramar. Oueno )amos con las de"#n#c#ones )erdaderas. Pro$ramac#,n de"ens#)a: t%cn#ca de pro$ramac#,n basada en mam#ar las )er#"#cac#ones supon#endo !ue las pet#c#ones de cl#entes o entradas de usuar#o no t#enen por !u% responder a l,$#ca al$una. Ousca mejorar la cal#dad del so"t@are e)#tando errores pero supone m(s c,d#$o ' uso de recursos en )er#"#cac#ones. Pro$ramac#,n e&trema: cons#derar !ue los camb#os de re!u#s#tos sobre la marc+a son un aspecto natural #ne)#table e #ncluso deseable del desarrollo de pro'ectos. Se$0n esta t%cn#ca ser capaces de adaptarnos a los camb#os de re!u#s#tos en cual!u#er punto de la )#da del pro'ecto es una apromac#,n mejor ' m(s real#sta !ue # ntentar de"#n#r todos los re!u#s#tos al com#eno del pro'ecto. Una t%cn#ca dentro de la pro$ramac#,n e&trema es la pro$ramac#,n por parejas. Pro$ramac#,n por parejas: t%cn#ca !ue se basa en !ue la #mplementac#,n de una clase no la real#a una persona sola para despu%s pasar a re)#s#,n por otra s#no !ue el desarrollo de la clase se +ace entre dos personas con comun#cac#,n constante desde el pr#mer momento. //.PREGUNTA: ¿Iu% #nter"ace ' clase +emos de usar para #nterceptar el e)ento de c#erre de una )entana? RESPUESTA: Knter"ace Z#ndo@;#stener clase Z#ndo@Adapter. 4uc+a $ente p#ensa !ue se usaría un Act#on;#stener pero Xrame no t#ene
d#spon#ble el m%todo addAct#on;#stener sí en camb#o el m%todo addZ#ndo@;#stener. ;o mejor es +acer un pe!ueWo c,d#$o ' )erlo con nuestros prop#os ojos por!ue s# no lo +acemos memor#arlo s#n m(s es un poco d#"íc#l. Iueda d#c+o. /2.PREGUNTA: ¿Iu% resultado se obt#ene al ejecutar este c,d#$o a)a? publ#c class test 6 publ#c stat#c )o#d add/ -Knte$er # 6 #nt )al #.#ntJalue- )al / # ne@ Knte$er -)al 7 publ#c stat#c )o#d ma#n -Str#n$ ar$sF 6 Knte$er # ne@ Knte$er -> add/ -# S'stem.out.pr#ntln -#.#ntJalue - 7 7
RESPUESTA: Esta pre$unta t#ene su #nter%s 'a !ue en el "ondo est( la "orma en !ue se pasan los par(metros a los m%todos ' constructores: ¿por )alor o por )ar#able? Por pantalla se #mpr#me un >. # ne@ Knte$er -)al es una mod#"#cac#,n de la re"erenc#a a objeto !ue es la )ar#able. 5omo la re"erenc#a a objeto se pasa por )alor -una cop#a esta mod#"#cac#,n no es conoc#da lue$o en el ma#n. Resultado se #mpr#me un cero. Por s# no +a !uedado claro: los par(metros en a)a se pasan por )alor. ;o !ue pasa es !ue en ja)a al tratarse de pro$ramac#,n or#entada a obj etos sacar conclus#ones de esta a"#rmac#,n no es #$ual de "(c#l !ue en otros len$uajes. Este es uno de los mot#)os por los !ue se d#ce !ue la pro$ramac#,n or#entada a objetos es un poco m(s compl#cada. /3.PREGUNTA: Dado el s#$u#ente c,d#$o #nd#car s# el m%todo pr#)ate )o#d setJar -#nt a "loat c #nt b 6 7 const#tu#ría una sobrecar$a )(l#da del m%todo setJar. publ#c class Pre$13testun#o 6 publ#c )o#d setJar -#nt a #nt b "loat c 6 7 QQ Nue)o c,d#$o 7 RESPUESTA: Sí este m%todo sería una sobrecar$a )(l#da desde el
momento en !ue los t#pos de los par(metros no co#nc#den con los t#pos del m%todo 'a escr#to. En concreto en el 'a escr#to tenemos #nt #nt "loat ' en el nue)o tenemos #nt "loat #nt. Sobrecar$ar #mpl#ca !ue const#tu'an m%todos d#st#ntos ' esto se produce. Sobreescr#b#r sería otra cosa: !ue co#nc#dan el nombre del m%todo de los par(metros ' el t#po de los par(metros. /8.PREGUNTA: Dado el s#$u#ente c,d#$o #nd#car s# el m%todo protected )o#d setJar -#nt a #nt b "loat c 6 7 const#tu#ría una sobrecar$a )(l#da del m%todo setJar. publ#c class Pre$13testun#o 6 publ#c )o#d setJar -#nt a #nt b "loat c 6 7 QQ Nue)o c,d#$o 7 RESPUESTA: No este m%todo no sería una sobrecar$a )(l#da desde el momento en !ue co#nc#de el nombre ' los t#pos de los par(metros. /9.PREGUNTA: Dado el s#$u#ente c,d#$o #nd#car s# el m%todo protected )o#d setJar -#nt "l#n #nt "lan "loat "lon 6 7 const#tu#ría una sobrecar$a )(l#da del m%todo setJar. publ#c class Pre$13testun#o 6 publ#c )o#d setJar -#nt a #nt b "loat c 6 7 QQ Nue)o c,d#$o 7 RESPUESTA: No este m%todo no sería una sobrecar$a )(l#da desde el momento en !ue co#nc#den los t#pos de los par(metros ' el nombre del m%todo. Iue el nombre de los par(metros no co#nc#da es #rrele)ante 'a !ue esto no perm#te d#"erenc#ar un m%todo de otro a la +ora de #n)ocarlo. /.PREGUNTA: Dado el s#$u#ente c,d#$o #nd#car s# el m%todo publ#c #nt setJar -"loat a #nt b #nt c 6return b7 const#tu#ría una sobrecar$a )(l#da del m%todo setJar. publ#c class Pre$13testun#o 6 publ#c )o#d setJar -#nt a #nt b "loat c 6 7 QQ Nue)o c,d#$o 7 RESPUESTA: Sí sería una sobrecar$a )(l#da desde el momento en !ue co#nc#de el nombre pero los t#pos de los par(metros son d#st#ntos. No sería )(l#da s# los t#pos "ueran co#nc#dentes.
/<.PREGUNTA: ¿5u(l es el resultado de ejecutar este c,d#$o? #nt #> #" -# 6 S'stem.out.pr#ntln -BCelloB 7
RESPUESTA: Error de comp#lac#,n: en el #" se espera un t#po boolean ' se encuentra un t#po #nt. Tampoco sería )(l#do # VV # por el m#smo mot#)o. Sí sería )(l#do # # -#mpr#m#ría Cello , #[# -no #mpr#m#ría nada por pantalla. 2>.PREGUNTA: ¿5u(l es el resultado de ejecutar este c,d#$o? #nt #1 #nt j* #"-#1 VV j* S'stem.out.pr#ntln -B\]B
RESPUESTA: Se muestra por pantalla \]. ;a ausenc#a de lla)es en el #" se adm#te ejecut(ndose como consecuenc#a la pr#mera #nstrucc#,n a cont#nuac#,n del #". 21.PREGUNTA: ¿5u(l es el resultado de ejecutar este c,d#$o? publ#c class Pre$/Pass 6 stat#c #nt j*> publ#c stat#c )o#d ma#n -Str#n$F Ar$s 6 #nt #1> Pre$/Pass p ne@ Pre$/Pass- p.ametodo-# S'stem.out.pr#ntln-# S'stem.out.pr#ntln-j 7 publ#c )o#d ametodo -#nt & 6 &&=* jj=* 7 7
RESPUESTA: Se muestra por pantalla 1> ' 2>. Raonam#ento: la )ar#able j es una )ar#able de clase pero una )ar#able: no es una
constante por!ue para serlo debería lle)ar la palabra cla)e "#nal. Por tanto es conoc#da en toda la clase -constructor ' m%todos. En el ma#n la )ar#able # se pasa como par(metro al m%todo por )alor -una cop#a con lo cual la mod#"#cac#,n del par(metro no es conoc#da "uera del m%todo. S#n embar$o la mod#"#cac#,n de una )ar#able de clase sí es conoc#da s# se real#a la man#pulac#,n d#rectamente. 2*.PREGUNTA: ¿5u(l es el resultado de ejecutar este c,d#$o? publ#c class Probando 6 boolean prueba "alse publ#c Probando- 6trocar-prueba S'stem.out.pr#ntln -prueba7 publ#c stat#c )o#d ma#n -Str#n$F Ar$s 6 Probando p ne@ Probando - 7 publ#c boolean trocar -boolean ) 6 ) [) return ) 7 7 RESPUESTA: Se muestra por pantalla "alse. Raonam#ento: al crear un objeto se #n)oca el constructor. ;a ejecuc#,n del m%todo de)uel)e true pero esto no t#ene e"ectos sobre la )ar#able por!ue la )ar#able se pasa por )alor.
2/.PREGUNTA: ¿5u(l es el resultado de ejecutar este c,d#$o? publ#c class Probando 6 boolean prueba "alse publ#c Probando- 6trocar-prueba S'stem.out.pr#ntln -prueba7 publ#c stat#c )o#d ma#n -Str#n$F Ar$s 6 Probando p ne@ Probando - 7 publ#c boolean trocar -boolean ) 6 prueba [prueba return prueba 7
7
RESPUESTA: Se muestra por pantalla true. Raonam#ento: al crear un objeto se #n)oca el constructor. En el m%todo se man#pula la )ar#able prueba d#rectamente no el par(metro !ue realmente no t#ene "unc#onal#dad tal ' como est( de"#n#do. 22.PREGUNTA: ¿5u(l es el resultado de ejecutar este c,d#$o? publ#c class Probando 6 boolean prueba "alse publ#c Probando- 6 S'stem.out.pr#ntln -prueba7 publ#c stat#c )o#d ma#n -Str#n$F Ar$s 6 Probando p ne@ Probando - S'stem.out.pr#ntln -[prueba 7 7
RESPUESTA: Error de comp#lac#,n: una )ar#able no est(t#ca no puede ser ut#l#ada en un conte&to est(t#co. Un m%todo est(t#co solo podr( trabajar con atr#butos est(t#cos 'a !ue un m%todo de clase se #n)oca bajo el nombre de la clase no bajo el nombre de un objeto. No tendría sent#do man#pular d#rectamente atr#butos de objeto dentro de un m%todo est(t#co. En el conte&to est(t#co sí podremos crear ' man#pular objetos a tra)%s de los m%todos prop#os de d#c+os objetos. 23.PREGUNTA: ¿5u(l es el resultado de n^8 para cual!u#er entero? RESPUESTA: ^ es el operador mod o resto de una d#)#s#,n. >^8 8 1^83 *^82 /^8/ 2^8* 3^81 8^8 > 9^8 1 ' se$u#mos #$ual con * / 2HTenemos enteros de > a 8 pero ¿!u% ocurre con los n0meros ne$at#)os? 1^8 1 *^8 * H+asta 8^8>. Por tanto el resultado de n^8 para cual!u#er entero es 3 2 / * 1 > 1 * / 2 , 3. 28.PREGUNTA: ¿5u(les son los tres t#pos est(ndar de d#(lo$os !ue posee la clase de S@#n$ \pt#onPane? RESPUESTA: D#(lo$o de mensaje d#(lo$o de entrada ' d#(lo$o de con"#rmac#,n. Así de bre)e 29.PREGUNTA: ¿Iu% es una e&cepc#,n?
RESPUESTA: Una e&cepc#,n es un objeto !ue cont#ene #n"ormac#,n relat#)a a los detalles de un error en la ejecuc#,n de un pro$rama. 2.PREGUNTA: S# la clase es una subclase de la clase _. ¿5u(l de los s#$u#entes c,d#$os no comp#lar(? a. _ objetone@ _- b. objetone@ _- c. objeto ne@ - d. _ objetone@ - RESPUESTA: ;a opc#,n a comp#la s#n problemas. ;a opc#,n c tamb#%n. _ objeto ne@ - comp#la puesto !ue las superclases son pol#m,r"#cas ' adm#ten t#pos de las subclases. Un )e+ículo puede crearse de"#n#%ndolo como un coc+e. No comp#lar( la opc#,n b: un coc+e no puede crearse de"#n#%ndolo como un )e+ículo. 2<.PREGUNTA: S# una )ar#able cal#"#cada como "#nal re"erenc#a a un objeto ¿es pos#ble mod#"#car el objeto al !ue apunta d#c+a )ar#able m#entras el pro$rama se est( ejecutando?
RESPUESTA: No no es pos#ble. Al estar declarado como constante no es pos#ble mod#"#cac#,n al$una. 3>.PREGUNTA: ¿5u(l es el t#po de retorno para los m%todos add -E e de las #nter"aces Set ' ;#st?
RESPUESTA: Podríamos pensar !ue el t#po es )o#d por!ue es una operac#,n en la !ue usualmente no esperamos un retorno. S#n embar$o el t#po de retorno es boolean ' nos s#r)e para comprobar s# la #nserc#,n e"ect#)amente se +#o o no se +#o en el caso de !ue !ueramos +acerlo. Por ejemplo el retorno ser( "alse s# #ntentamos #nsertar un elemento dupl#cado en un set. 31.PREGUNTA: ¿Puede una clase contar cu(ntas #nstanc#as +an s#do creadas de d#c+a clase? RESPUESTA: Sí bastaría con #nclu#r una )ar#able est(t#ca -de clase !ue en el constructor se #ncrementara un#tar#amente cada )e !ue se crea una #nstanc#a de d#c+a clase. 3*.Esta pre$unta t#ene #nter%s comprenderla b#en. PREGUNTA: ¿5u(l ser( el resultado de ejecutar este c,d#$o?
;#st `Str#n$ l#st Arra's.as;#st -BaB BbB BcB S'stem.out.pr#ntln -l#st
RESPUESTA: Este es un caso cur#oso por!ue ;#st es una #nter"ace ' por lo tanto no es #nstanc#able. Podría parecer !ue por ello nos saltaría un error de comp#lac#,n pero no es así. El t#po de)uelto por Arra's.as;#st es s#mplemente ;#st lo cual tampoco nos aclara muc+o. No obstante el resultado de ejecuc#,n es !ue se muestra por pantalla a b cF lo cual muestra !ue se +a creado un objeto. ¿De !u% t#po? S# nos ponemos a #n)est#$arH #" -l#st #nstanceo" Abstract;#st 6S'stem.out.pr#ntln -BEs una #nstanc#a de Abstrac;#stB7 #" -l#st #nstanceo" Arra';#st 6S'stem.out.pr#ntln -BEs una #nstanc#a de Arra';#stB7 #" -l#st #nstanceo" AbstractSe!uent#al;#st 6S'stem.out.pr#ntln -BEs una #nstanc#a de AbstractSe!uent#al;#stB7 El resultado es !ue por de"ecto a)a al menos en a)a 8 le as#$na por de"ecto el t#po Abstract;#st. ;#st `Knte$er m#;#staEnteros Arra's.as;#st -1 3 9 1/ *1 tamb#%n es )(l#do. No obstante el uso de esta s#ntas da lu$ar a comportam#entos e&traWos. Por ejemplo se perm#te la mod#"#cac#,n de la l#sta con el m%todo set pero no se perm#te su ampl#ac#,n con el m%todo add. 3/.¿5u(l es el resultado de ejecutar este c,d#$o? ;#st `Str#n$ l#st ne@ Arra';#st`Str#n$ -Arra's.as;#st -BaB BbB BcB ;#st `Knte$er m#;#staEnteros ne@ Arra';#st`Knte$er - Arra's.as;#st -1 3 9 1/ *1
RESPUESTA: El c,d#$o comp#la ' se crean los Arra';#st correctamente. 32.PREGUNTA: ¿Iu% "altaría en el s#$u#ente c,d#$o para !ue sea )(l#do? publ#c Str#n$ $etNombre - 6 #" -nombrenull 6tr+o@ ne@ NullPo#nterE&cept#on- 7 else 6 return t+#s.nombre 7
RESPUESTA: Podría parecer !ue "alta una sentenc#a return en la pr#mera parte del cond#c#onal pero en real#dad no es así. El lanam#ento de una e&cepc#,n con t+ro@ #nterrumpe la ejecuc#,n del m%todo por lo !ue no es necesar#a sentenc#a return en estos casos. Por tanto no "alta nada. Pre$unta con truco[[[ 33.PREGUNTA: Durante la ejecuc#,n de un constructor ejecutada la m#tad del c,d#$o del m#smo se alcana una sentenc#a t+ro@. ¿;le$a a crearse el objeto? RESPUESTA: No s# se alcana una sentenc#a t+ro@ durante la ejecuc#,n del constructor no lle$a a crearse el objeto. 38.Un metodo de clase stat#c. ¿se podría llamar s#n #nstanc#ar un objeto de la clase?. a. No s#empre +a' !ue declarar el objeto ' lue$o llamar al metodo. b. No s#empre +a' !ue +a' !ue declarar el objeto crearlo ' a cont#nuac#,n llamar al metodo. c. Sí se podría llamar al metodo desde la m#sma clase. d. Sí se podría llamar al metodo pero s,lo s# la clase es abstracta. RESPUESTA: Te do' m# op#n#,n: creamos una clase denom#nada prueba con este conten#do #mport ja)a.ut#l.Scanner publ#c class prueba 6 publ#c stat#c )o#d m#4etodo - 6 S'stem.out.pr#ntln -BKntroduca el pr#mer n0mero -entero:B Scanner ent1 ne@ Scanner-S'stem.#n #nt num1 ent1.ne&tKnt- S'stem.out.pr#ntln -BKntroduca el se$undo n0mero -realB Scanner ent* ne@ Scanner-S'stem.#n double num* ent*.ne&tDouble- S'stem.out.pr#ntln -BEl producto de los dos n0meros es B -num1 = num* 7 7 A cont#nuac#,n creamos una clase denom#nada sumaDosNumeros con este conten#do:
publ#c class sumaDosNumeros 6 publ#c stat#c )o#d ma#n -Str#n$F Ar$s 6 prueba.m#4etodo-
7 7 Resultado: ejecutamos el ma#n ' el pro$rama se ejecuta correctamente. 5onclus#,n: Se puede llamar al m%todo s#n #nstanc#ar un objeto de l a clase. o no )eo n#n$una de las respuestas clara s# tu)#era !ue responder respondería la c por el#m#nac#,n. 39.PREGUNTA: ¿5u(les de las s#$u#entes declarac#ones nunca podrían $enerar dos objetos de la m#sma clase con los m#smos )alores?. a. Tr#an$ulo obj5#r1 ne@ Tr#an$ulo-3 Tr#an$ulo obj5#r* ne@ Tr#an$ulo-obj5#r1 b. Tr#an$ulo obj5#r1 ne@ Tr#an$ulo-3 Tr#an$ulo obj5#r* obj5#r1 c. Tr#an$ulo obj5#r1 ne@ Tr#an$ulo-3 Tr#an$ulo obj5#r* ne@ Tr#an$ulo-3 d. Tr#an$ulo obj5#r1 ne@ Tr#an$ulo-3 Tr#an$ulo obj5#r* ne@ Tr#an$ulo-3 RESPUESTA: Jeamos las opc#ones !ue sí pueden $enerar dos objetos de la m#sma clase con los m#smos )alores: a ;a clase Tr#an$ulo podría tener dos constructores uno !ue rec#ba dos par(metros ' otro !ue rec#ba un objeto de la clase. El constructor !ue rec#be el objeto de la clase podría ser)#r para crear otro objeto con los m#smos )alores. c Estamos $enerando dos objetos de la m#sma clase en pr#nc#p#o con los m#smos )alores por!ue le pasamos los m#smos par(metros d Estamos $enerando dos objetos de la m#sma clase en pr#nc#p#o con los m#smos )alores por!ue le pasamos los m#smos par(metros A+ora nos !ueda la opc#,n b ¿Iu% es lo !ue +ace? Declara una )ar#able apuntadora obj5#r1 ' crea un objeto -espac#o de memor#a al !ue apunta la )ar#able. ;ue$o declara una )ar#able apuntadora obj5#r* ' d#ce !ue esa )ar#able apuntadora apunta al m#smo objeto al !ue est( apuntando la otra )ar#able.
Por tanto de esta manera nunca creamos dos objetos 'a !ue lo !ue +acemos es crear un objeto ' tener dos )ar#ables !ue apuntan a %l.