User Tools

Site Tools


Problem constructing authldap
test_grila_ian2015
Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
test_grila_ian2015 [2015/01/21 00:37]
Adriana Draghici [OOP]
test_grila_ian2015 [2015/01/21 00:41]
Adriana Draghici [Clase abstracte și interfețe]
Line 207: Line 207:
 == Clase abstracte și interfețe == == Clase abstracte și interfețe ==
  
-**13. Care afirmații sunt corecte? (Ci denotă clase, Ii denotă interfețe)**+**8. Care afirmații sunt corecte? (Ci denotă clase, Ii denotă interfețe)**
  
 A) C1 extends I1; A) C1 extends I1;
Line 220: Line 220:
   * **B, D**   * **B, D**
  
-**Explicație**:​ Este o întrebare standard despre fundamentele limbajului Java. Esențial este că o clasă //poate extinde o singură altă clasă și poate implementa oricâte interfețe//. Afirmația E este deci greșitădeci pică din start 2 variante. Afirmațiile A și C iarăși nu au sens, o clasă //extinde// altă clasă și o interfață ​//extinde// altă interfață. Afirmația D este corectă și apare des în viața reală. Ce este potențial tricky la această întrebare este afirmația B, care este corectă. De ce este corectă: în virtutea implementării mai multor ​interfețe, compilatorul este doar interesat de adunat semnături de metode în cadrul interfețelor. Vă puteți pune întrebarea ce se întâmplă dacă I1 și I2 conțin aceeași semnătură de metodă și pe care dintre ele o moștenește I. Un răspuns (cu niște simplificări) e că nu contează; ceea ce contează este ca acea semnătură de metodă să se afle în I. Deci faptul că o interfață extinde mai multe alte intefețe cu semnături de metode potențial identice nu deranjează compilatorul,​ pentru că nu există și implementări diferite care să declanșeze eventuale ambiguități.+**Explicație**:​ Este o întrebare standard despre fundamentele limbajului Java. Esențial este că o clasă //poate extinde o singură altă clasă și poate implementa oricâte interfețe, iar o interfață ​poate extinde ​oricâte alte interfețe//
  
 +Afirmația E este deci greșită, deci pică din start 2 variante. Afirmațiile A și C iarăși nu au sens, o clasă //extinde// altă clasă și o interfață //extinde// altă interfață. Afirmația D este corectă și apare des în viața reală. Ce este potențial tricky la această întrebare este afirmația B, care este corectă. De ce este corectă: în virtutea implementării mai multor interfețe, compilatorul este doar interesat de adunat semnături de metode în cadrul interfețelor. Vă puteți pune întrebarea ce se întâmplă dacă I1 și I2 conțin aceeași semnătură de metodă și pe care dintre ele o moștenește I. Un răspuns (cu niște simplificări) e că nu contează; ceea ce contează este ca acea semnătură de metodă să se afle în I. Deci faptul că o interfață extinde mai multe alte intefețe cu semnături de metode potențial identice nu deranjează compilatorul,​ pentru că nu există și implementări diferite care să declanșeze eventuale ambiguități.
  
-** 8. Fie: **+ 
 +** 9. Fie: **
  
 <code java> <code java>
Line 242: Line 244:
   * 4   * 4
  
-**Explicație**:​ Esențial este faptul că orice variabilă ​în corpul unei interfețe este automat (dedus) ''​public static final'',​ iar metodele sunt implicit ''​abstract''​. Înarmați cu aceste cunoștințe,​ să luăm acum fiecare linie pe rând:+**Explicație**:​ Esențial este faptul că //orice variabilă ​din corpul unei interfețe este automat (dedus) ''​public static final'',​ iar metodele sunt implicit ''​public ​abstract''​//. Înarmați cu aceste cunoștințe,​ să luăm acum fiecare linie pe rând:
  
   - ''​protected''​ și ''​public''​ (dedus) intră în contradicție - greșit   - ''​protected''​ și ''​public''​ (dedus) intră în contradicție - greșit
Line 248: Line 250:
   - corect   - corect
   - puteți considera declarația un pleonasm, dar compilatorul nu este deranjat, ''​abstract''​ este oricum dedus - corect   - puteți considera declarația un pleonasm, dar compilatorul nu este deranjat, ''​abstract''​ este oricum dedus - corect
-  - metodele din interfețe sunt prin definiție ''​abstract'';​ final + abstract = compiler headbang. Greșit.+  - metodele din interfețe sunt prin definiție ''​abstract'';​ final + abstract = compiler headbang ​- greșit.
  
 == Clase interne ==  == Clase interne == 
test_grila_ian2015.txt · Last modified: 2015/01/21 00:53 by Adriana Draghici