Sunteți pe pagina 1din 4

2 0 2 1

1. Într-un Set NU putem avea duplicate


2. În LinkedHashMap se păstrează ordinea de inserție a elementelor
3. Interfața Map NU extinde interfața Collection
4. În TreeSet nu se păstrează ordinea de inserție a elementelor
5. O clasă poate fi abstractă fără o metodă abstractă
6. O clasă abstractă NU poate moșteni de la mai multe clase abstracte
7. O interfață poate moșteni mai multe interfețe în același timp
8. O interfață NU poate moșteni o clasă abstractă care are doar metode abstracte
9. O clasă poate implementa mai multe interfețe în același timp
10. Visitor Pattern face ușoară separarea operațiilor de obiectele pe care se
execută operațiile respective
11. Factory se foloseste în caz că dorim ca un client să nu aibă rol în crearea
unui entități după o preferință de a sa
12. O metoda default este o metoda non-statica care este deja implementata intr-o
interfata
13. Obiectele sunt stocate pe heap

2 0 2 0

1. documentviewer e de tipul documentviewer dar instantiat ca adobereader

Asta inseamna ca dacă metoda e statica sau nu e supradefinita o sa apeleze obiectul


documentviewer

Dacă e suprascrisa o sa fie adobereader


DECI DACA E STATICA MA UIT LA TIP; DACA NU E MA UIT LA NEW TIP

1) Care este diferenta intre o clasa interna si o clasa interna statica?

R: Clasa interna (non-statica) poate instantia obiecte doar prin intermediul unei instante
a clasei exterioare si are access la toate variabilele si metodele acesteia, indiferent daca
sunt statice sau nu.

Clasa interna statica poate instantia obiecte fara a fi nevoie de o instanta a clasei
exterioare, folosindu-se de clasa in sine ( OuterClass.InnerClass inner = new
InnerClass(); ). De asemenea, neavand o instanta a clasei externe, clasa interna statica
are access IN MOD DIRECT doar la variabilele si metodele care tin de clasa, in speta
clasa exterioara, mai precis variabilele si metodele statice.
2) De cate tipuri sunt clasele interne? Precizati cate un avantaj al uzitarii fiecarui tip
in parte.

R: Clasele interne sunt de 4 tipuri: ,normale’ (regular inner classes), statice, anonime si
interne metodelor.

Clasele interne obisnuite (normal/regular) au ca avantaj faptul ca pot accesa toate


variabilele si metodele clasei externe, indiferent daca acestea sunt statice sau nu.

Clasele interne statice au ca avantaj faptul ca nu este nevoie de o instanta a clasei


externe pentru a putea instantia obiecte ale clasei interne.

Clasele anonime sunt preferate in favoarea claselor ce au un numar redus de


utilizari/implementari. Aceasta are ca avantaj faptul ca putem declara si instantia clasa
respectiva simultan si ajuta la o scriere de cod succinta, pastrand un grad de genericitate
unde nu este nevoie de concretizare.

Clasele interne metodelor sunt folosite in momentul in care utilitatea acestora este
locala si nu avem nevoie de ele in alta parte a programului, ascunzand in acelasi timp
implementarea de zona exterioara metodelor ce le contin.

3) Se poate suprascrie o clasa interna? Dar o clasa interna statica? NU

4) Explicati mecanismul de mostenirea in cazul claselor interne. Este posibila realizarea


unei clase care sa mosteneasca o clasa definita intr-o metoda? ( NU)

Referitor la mecanismul de mostenire in cazul claselor interne vom analiza mai multe
situatii. In cazul in care clasa fiu ce mosteneste clasa interna este in afara clasei externe
( declarata total separate ), analizam urmatoarele situatii

-> in cazul in care clasa interna este una non-statica, atunci trebuie sa ,,legam” in
constructorul clasei fiu o referinta la un obiect de tipul clasei interne ( eventual dat ca
parametru constructorului ). In cazul in care clasa interna este una statica atunci
implementarea este una mult mai usoara, in momentul in care o extindem avem o
referinta directa la aceasta, neavand nevoie sa facem legaturile sus mentionate in
constructor. ( InheritingClass extends OuterClass.InnerClass va fi suficient pentru a
realiza mostenirea ).
-> In cazul in care clasa care mosteneste clasa interna ( fie ea statica sau non-statica)
se afla si ea la randul ei in aceeasi clasa externa, nu este nevoie de implementari
aditionale

-> Clasa interna poate mosteni clasa externa, insa acest lucru este de multe ori
redundant, mai ales daca clasa interna este una non-statica, in cazul acesta avand
acces oricum la variabilele si metodele clasei externe

-> Daca o clasa (A) mosteneste clasa externa, aceasta va mosteni doar metodele si
variabilele acesteia, nu si clasele. Pentru a mosteni si clasa interna este nevoie de o
noua clasa (B) in interiorul clasei A care sa mosteneasca clasa interna aferenta.

5) Limbajul Java permite definirea interfetelor in interiorul unei clase? DA daca interfata
e statica). Dar in interiorul unei metode? NU (metodele nu pot contine membri static)

6) O metoda poate avea ca rezultat un obiect al carui tip este reprezentat de o clasa
definita local in metoda? NU

 abstractizare;  încapsulare;  modularitate;  ierarhizare.

Următoarele reguli sunt obligatorii pentru metodele moştenite pe care dorim să le
supradefinim:

 Metodele declarate public în superclasă trebuie să fie obligatoriu publice în toate
subclasele.

 Metodele declarate protected în superclasă trebuie să fie publice fie protected în
subclase. Ele nu pot fi declarate private sau implicit

 Metodele declarate private în superclasă nu se moştenesc, aşa că pentru ele nu există
reguli de supradefinire!

 Metodele declarate fara modificator de acces (implicit) în superclasă trebuie să fie
declarate public, protected sau implicit în subclase. Ele nu pot fi declarate private!
Type of methods: Interface can have only abstract methods. An abstract class can have
abstract and non-abstract methods. From Java 8, it can have default and static methods
also.

Final Variables: Variables declared in a Java interface are by default final. An abstract
class may contain non-final variables.

Type of variables: Abstract class can have final, non-final, static and non-static variables.
The interface has only static and final variables.

Implementation: Abstract class can provide the implementation of the interface.


Interface can’t provide the implementation of an abstract class.

S-ar putea să vă placă și