Sunteți pe pagina 1din 6

Programarea Orientata Spre Obiecte, Limbajul Java, 2019-2020 CEITI

Tema10. Tipuri de clase. Clase interne.


Care clase se numesc imbricate?
În Java, este posibil să se declare o clasă în cadrul altei clase. Aceasta fiind numită clasă
imbricată (nested classes, clase încuibate). Clasa de bază se numește de acoperire.
Acestea permit gruparea claselor care sunt legate logic și controlul vizibilității uneia din cadrul
celorlalte.
Vizibilitatea și domeniul de aplicare al clasei imbricate este delimitată de clasa în care este
declarată. Astfel, dacă o clasă B este declarată în cadrul clasei A, înseamnă că existența clasei B
depinde de existența clasei A. Clasa imbricată, B, este un membru al clasei A.
Spre deosebire de clasele obișnuite, clasele interne pot fi statice și / sau private.
Sintaxa:
public class A_ClasaDeAcoperire{
class B_ClasaImbricata{
...}
...}
Clasele imbricate se folosesc atunci când o clasă are nevoie în implementarea sa de o altă clasă
şi nu există motiv pentru care clasa imbricată se fie folosită desinestătătoare (nu mai este folosită
nicăieri).
La fel ca și câmpurile, metodele, blocurile de inițializare, acestea sunt de două tipuri statice și
nestatice care la rândul lor sunt de diverse tipuri:

Care sunt caracteristicele claselor nestatice?


 Se mai numesc interne (non - static nested classes, inner classes).
 sunt declarate fără modificatorul static, are acces direct la membrii clasei externe fără a
declara un obiect al clasei externe, chiar dacă aceștia sunt declarați private;
 o clasă internă nu este accesibilă direct din exteriorul clasei de acoperire;
 nu poate conţine membri statici în interiorul ei, excepţie fiind constanta , final static;
 pot fi clase de acoperire pentru alte clase;
 pot implementa interfeţe;
 sintaxa de instanțiere din exterior a unei clase interne este următoarea:
ClasaDeAcoperire obAcoperire = new ClasaDeAcoperire();
ClasaDeAcoperire.ClasaInterna obIntern =
obAcoperire.new ClasaInterna();

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


1
Programarea Orientata Spre Obiecte, Limbajul Java, 2019-2020 CEITI
Exemplul 1:
class ClasaDeAcoperire{
int num=2;
static int x=3;
class ClasaInterna {
public void print() {
System.out.println("Aceasta este o clasă internă");
System.out.println("Pot accesa variabila de instanta num = "+ num);
System.out.println("Pot accesa variabila de clasa x = "+ x);

}
}}
class Testare {
public static void main(String args[]) {
ClasaDeAcoperire ob = new ClasaDeAcoperire();
ClasaDeAcoperire.ClasaInterna x = ob.new ClasaInterna();
x.print();
}}

Exemplul 2:
class ClasaDeAcoperire{
int num;
ClasaInterna x = new ClasaInterna();
class ClasaInterna {
public void print() {
System.out.println("Aceasta este o clasă internă");
}
}
}
class Testare {
public static void main(String args[]) {
ClasaDeAcoperire ob = new ClasaDeAcoperire();
ob.x.print();
}
}

Care sunt caracteristicele claselor statice?


 sunt declarate cu ajutorul modificatorului static;
 pot fi declarate abstracte sau finale;
 pot conține membri statici;
 nu au acces direct la membrii clasei externe care sunt nestatici, accesul fiind realizat doar prin
intermediul obiectelor;
 pentru a crea un obiect al clasei imbricate statice respectăm sintaxa:
ClasaDeAcoperire.clasaStatica obStatica =
new ClasaDeAcoperire.clasaStatica();
opreavictoria86@gmail.com © MUSTEAȚĂ Victoria
2
Programarea Orientata Spre Obiecte, Limbajul Java, 2019-2020 CEITI
Exemplul 3:
class DeAcoperire {
static class ImbricataStatica {
public void afiseaza() {
System.out.println("Mesaj din clasa statica");
}
}
public static void main(String args[]) {
DeAcoperire.ImbricataStatica ob = new DeAcoperire.ImbricataStatica();
ob.afiseaza();
}
}

Exemplul 4:
class DeAcoperire {
public int MembruDeAcoperire = 2;

class ClasaNonStatica {
private int i = 1;
public int valoare() { return i + MembruDeAcoperire; }
}

static class ClasaStatica {


public int k = 99;
public int valoare() {
DeAcoperire ob=new DeAcoperire();
k += ob.MembruDeAcoperire;
return k;}
}
}
class Test {
public static void main(String[] args) {
DeAcoperire ob = new DeAcoperire ();
//instantiere corecta a clasei non statica
DeAcoperire.ClasaNonStatica nonSt = ob.new ClasaNonStatica();
System.out.println(nonSt.valoare());
//instantiere corecta a clasei statica
DeAcoperire.ClasaStatica st = new DeAcoperire.ClasaStatica();
System.out.println(st.valoare());
}}

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


3
Programarea Orientata Spre Obiecte, Limbajul Java, 2019-2020 CEITI
1. Dacă în exemplul de mai sus vom încerca în cadrul clasei ClasaStatica să folosim
construcţia k +=MembruDeAcoperire; vom obţine eroare de compilare.
2. Dacă în cadrul metodei main() vom folosi construcţia DeAcoperire.ClasaStatica
st = new ClasaStatica(); vom obţine eroare de compilare , nu este respectată
Rețineți !

sintaxa de instanţiere a unei clase imbricată statică;


3. Clasele statice pot fi declarate cu orice tip de modificatori (public, protected, private,
default);
4. O clasă de acoperire poate avea orice număr de obiecte de tipul claselor imbricate în
interiorul ei;
5. Clasele interne pot fi declarate nu doar în interiorul unei clasei, dar şi în corpul unei
metode sau în corpul unei alte instrucţiuni.

Care este clasificarea claselor interne ( nestatice)?


Clasele interne sunt de 2 tipuri :
1. Locale.
2. Anonime.

Care sunt caracteristicele claselor nestatice locale?


- sunt definite într-un bloc ce conţine una sau mai multe declaraţii incluse în {} , acesta poate fi corp
de clasă, corp de metodă sau corp de instrucțiune;
- sunt vizibile doar în blocul în care au fost implementate, deci pot fi instanțiate doar în blocul dat;
- nu pot fi private , publice, protected sau static, pot fi finale sau abstracte;
- nu pot conţine în corpul lor cîmpuri şi metode statice;
- sunt rar utilizate din cauza codului lizibil pe care îl crează , acestea există şi pot fi utilizate la dorința
programatorului;
- sunt de trei tipuri:
a) declarate în direct în corpul unei clase (exemplul de mai sus);
b) în corpul unui bloc de instrucțiuni;
c) declarate în corpul unei metode ( nu pot folosi variabilele declarate în metoda respectivă şi
nici parametri metodei, pentru a le putea accesa acestea trebuie să fie declarate final);
Exemplul 5:
class DeAcoperire {
int x = 0;

class Interna {
public int f() {
return x+1;
}
}
public void g(final int j) {
final int k = j;
class LocalaInMetoda{
public int f() { return k + j; }
}

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


4
Programarea Orientata Spre Obiecte, Limbajul Java, 2019-2020 CEITI
LocalaInMetoda i1 = new LocalaInMetoda();
System.out.println(i1.f());
}}
class test{
public static void main (String[] args) {
DeAcoperire t1 = new DeAcoperire();
DeAcoperire.Interna i2 = t1.new Interna();
System.out.println(i2.f());
t1.g(3);
}}

Care sunt caracteristicele claselor anonime?


- sunt clase locale fără nume.
- nu au constructor.
- nu pot extinde clase sau implementa interfeţe.
- extind o altă clasă sau implementează o interfaţă prin instanţierea acesteia cu ajutorul
operatorului new().
- nu pot conţine declaraţii statice.
- se folosesc efectiv atunci cînd este nevoie de supradefinirea unei metode pentru un singur obiect,
iar crearea unei clase obişnuite special pentru acesta nu are rost.
- sunt pe larg utilizate în lucru cu interfeţe grafice.
- se folosesc atunci cînd avem nevoie de o sigură instanţă pentru o clasă.
- nu pot fi public, private, protected sau static.

Sintaxa:
A a = new A(){
//descrierea membrilor clasei
};

Exemplul 6:
class Mesaj {
public void afiseaza() {
System.out.println("Mesaj din clasa Mesaj");
}
}

class Test{
public static void main(String[] args) {
Mesaj ob1 = new Mesaj(){
public void afiseaza(){
System.out.println("Mesaj din clasa Test");
}};
ob1.afiseaza();

Mesaj ob2 = new Mesaj();


ob2.afiseaza();
}}

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


5
Programarea Orientata Spre Obiecte, Limbajul Java, 2019-2020 CEITI
Din punct de vedere al POO, pentru a asigura reutilizare și flexibilitate/extensibilitate trebuie
să vă mențineți clasele cât mai specifice. Adică, o clasă trebuie să conțină cod numai pentru
lucrurile pe care trebuie să le facă un obiect al acelui tip; orice alt comportament ar trebui să facă
parte dintr-o altă clasă mai potrivită pentru acea funcționalitate.
Unul dintre motivele principale pentru utilizarea claselor interioare este capacitatea de a fi o
subclasă a oricărei clase, indiferent dacă clasa de bază are o superclasă sau nu. Utilizarea acestor
tipuri de clase rămâne la discreția programatorului.

Surse:
1. http://firozstar.tripod.com/_darksiderg.pdf
2. Cristian Frăsinaru, Curs practic de Java, pag. 65
3. Stefan Tanasa, Cristian Olaru, Stefan Andrei, Java de la 0 la expert, editura Polirom, pag. 167
4. https://www.geeksforgeeks.org/nested-classes-java/

opreavictoria86@gmail.com © MUSTEAȚĂ Victoria


6

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

  • Exceptii Java
    Exceptii Java
    Document8 pagini
    Exceptii Java
    Ciobanu Stanislav
    Încă nu există evaluări
  • POO Curs 03 2023
    POO Curs 03 2023
    Document31 pagini
    POO Curs 03 2023
    evelyne
    Încă nu există evaluări
  • Toate Grilele
    Toate Grilele
    Document66 pagini
    Toate Grilele
    Eduard Marin
    100% (1)
  • Java Basics
    Java Basics
    Document123 pagini
    Java Basics
    Alexandru Ionescu
    Încă nu există evaluări
  • 9 - Clase Abstracte
    9 - Clase Abstracte
    Document3 pagini
    9 - Clase Abstracte
    Данилов Алина
    Încă nu există evaluări
  • Teorie Clase Abstracte
    Teorie Clase Abstracte
    Document3 pagini
    Teorie Clase Abstracte
    Elena Secrieru
    Încă nu există evaluări
  • Subiecte Teste 2014-2016
    Subiecte Teste 2014-2016
    Document49 pagini
    Subiecte Teste 2014-2016
    Larisa
    Încă nu există evaluări
  • Constructori
    Constructori
    Document4 pagini
    Constructori
    Ciobanu Stanislav
    Încă nu există evaluări
  • Teorie Interfete
    Teorie Interfete
    Document5 pagini
    Teorie Interfete
    Elena Secrieru
    Încă nu există evaluări
  • Clase Interne
    Clase Interne
    Document8 pagini
    Clase Interne
    focusormadalina
    Încă nu există evaluări
  • Clase Abstracte Interfete
    Clase Abstracte Interfete
    Document11 pagini
    Clase Abstracte Interfete
    Diana Hartan
    Încă nu există evaluări
  • 5 Mostenirea
    5 Mostenirea
    Document3 pagini
    5 Mostenirea
    Данилов Алина
    Încă nu există evaluări
  • 7 Interfete
    7 Interfete
    Document6 pagini
    7 Interfete
    Данилов Алина
    Încă nu există evaluări
  • Java 10
    Java 10
    Document21 pagini
    Java 10
    Popescu Matei
    Încă nu există evaluări
  • l3 Po
    l3 Po
    Document3 pagini
    l3 Po
    Georgiana Berbece
    Încă nu există evaluări
  • Java Teorie
    Java Teorie
    Document10 pagini
    Java Teorie
    Nemes Dan
    Încă nu există evaluări
  • Java Curs
    Java Curs
    Document20 pagini
    Java Curs
    Alexandra-Elena Ciuhat
    Încă nu există evaluări
  • Raspunsuri Si Intrebari Hatz
    Raspunsuri Si Intrebari Hatz
    Document28 pagini
    Raspunsuri Si Intrebari Hatz
    Funky
    Încă nu există evaluări
  • Poo C#
    Poo C#
    Document13 pagini
    Poo C#
    cosminadumitrita
    Încă nu există evaluări
  • Clase Si Obiecte
    Clase Si Obiecte
    Document149 pagini
    Clase Si Obiecte
    Pahonea Gigi
    Încă nu există evaluări
  • Orientarea Pe Obiecte - Part - 1 - 2 - 3 - 4
    Orientarea Pe Obiecte - Part - 1 - 2 - 3 - 4
    Document136 pagini
    Orientarea Pe Obiecte - Part - 1 - 2 - 3 - 4
    Alex
    Încă nu există evaluări
  • L4 Java
    L4 Java
    Document11 pagini
    L4 Java
    Baban David
    Încă nu există evaluări
  • CursJava 02 CristianIonita OOP
    CursJava 02 CristianIonita OOP
    Document17 pagini
    CursJava 02 CristianIonita OOP
    Aysel-Ioana BATCOVEANU
    Încă nu există evaluări
  • Paoo C04 2021
    Paoo C04 2021
    Document55 pagini
    Paoo C04 2021
    LimonCello
    Încă nu există evaluări
  • Exercitii Java
    Exercitii Java
    Document43 pagini
    Exercitii Java
    Patriciu Lazar
    100% (1)
  • Notiuni de C++
    Notiuni de C++
    Document19 pagini
    Notiuni de C++
    Radu
    Încă nu există evaluări
  • Curs3 POOJava
    Curs3 POOJava
    Document37 pagini
    Curs3 POOJava
    Georgiana Izabela Dinu
    Încă nu există evaluări
  • Curs 11
    Curs 11
    Document14 pagini
    Curs 11
    Andreea Nicolaie
    Încă nu există evaluări
  • POO (Programare Orientată Pe Obiect)
    POO (Programare Orientată Pe Obiect)
    Document13 pagini
    POO (Programare Orientată Pe Obiect)
    Bianca Padurariu
    Încă nu există evaluări
  • POO C2 Principii OO - Abstractizare
    POO C2 Principii OO - Abstractizare
    Document63 pagini
    POO C2 Principii OO - Abstractizare
    Claudiu Iftimi
    Încă nu există evaluări
  • Curs 8
    Curs 8
    Document18 pagini
    Curs 8
    Daniel Popa
    Încă nu există evaluări
  • Lucrarea de Laborator Nr2
    Lucrarea de Laborator Nr2
    Document7 pagini
    Lucrarea de Laborator Nr2
    catalina bucur
    Încă nu există evaluări
  • Curs 4
    Curs 4
    Document39 pagini
    Curs 4
    Paul Doorel
    Încă nu există evaluări
  • Indrumar TAP
    Indrumar TAP
    Document120 pagini
    Indrumar TAP
    Ion Popescu
    Încă nu există evaluări
  • Clase Abstracte Si Interfete PDF
    Clase Abstracte Si Interfete PDF
    Document6 pagini
    Clase Abstracte Si Interfete PDF
    A A
    Încă nu există evaluări
  • De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    Document4 pagini
    De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    Данилов Алина
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document10 pagini
    Lab 1
    rosca9doinita
    Încă nu există evaluări
  • Lucrarea de Laborator NR 1
    Lucrarea de Laborator NR 1
    Document10 pagini
    Lucrarea de Laborator NR 1
    Grosu Maxim
    Încă nu există evaluări
  • Lucrarea de Laborator TAP NR 1
    Lucrarea de Laborator TAP NR 1
    Document10 pagini
    Lucrarea de Laborator TAP NR 1
    Calc 182
    Încă nu există evaluări
  • Curs 2
    Curs 2
    Document58 pagini
    Curs 2
    Daniel Popa
    Încă nu există evaluări
  • Lab 4 Rom
    Lab 4 Rom
    Document6 pagini
    Lab 4 Rom
    o m
    Încă nu există evaluări
  • Poo c4
    Poo c4
    Document107 pagini
    Poo c4
    Iulica Izmana
    Încă nu există evaluări
  • Clase Abstracte, Interfețe Și Polimorfism
    Clase Abstracte, Interfețe Și Polimorfism
    Document8 pagini
    Clase Abstracte, Interfețe Și Polimorfism
    Marcica Dranga
    Încă nu există evaluări
  • Programare in Java, Teorie OOP.
    Programare in Java, Teorie OOP.
    Document6 pagini
    Programare in Java, Teorie OOP.
    sandu405
    Încă nu există evaluări
  • Grile Upb
    Grile Upb
    Document82 pagini
    Grile Upb
    IoanaMiruna
    Încă nu există evaluări
  • Programarea Avansata
    Programarea Avansata
    Document8 pagini
    Programarea Avansata
    iry_piry
    Încă nu există evaluări
  • Constructori, Referinte - POO
    Constructori, Referinte - POO
    Document7 pagini
    Constructori, Referinte - POO
    Claudia Ardelean
    Încă nu există evaluări
  • Polimorfism. Supraîncărcarea, Suprascrierea Metodelor
    Polimorfism. Supraîncărcarea, Suprascrierea Metodelor
    Document18 pagini
    Polimorfism. Supraîncărcarea, Suprascrierea Metodelor
    Văru Igor bitîi
    Încă nu există evaluări
  • Introducere in Java
    Introducere in Java
    Document39 pagini
    Introducere in Java
    Ovidiul
    Încă nu există evaluări
  • Indrumar Tehnici Avansate
    Indrumar Tehnici Avansate
    Document107 pagini
    Indrumar Tehnici Avansate
    zero n
    Încă nu există evaluări
  • Subiect Lucrare Paw Rezolvat
    Subiect Lucrare Paw Rezolvat
    Document6 pagini
    Subiect Lucrare Paw Rezolvat
    Dana Raluca Raileanu
    Încă nu există evaluări
  • Fire de Executie in Python
    Fire de Executie in Python
    Document13 pagini
    Fire de Executie in Python
    Marius Ionescu
    Încă nu există evaluări
  • Teorie Java
    Teorie Java
    Document4 pagini
    Teorie Java
    Crina
    Încă nu există evaluări
  • JCPR 16
    JCPR 16
    Document28 pagini
    JCPR 16
    craciun roxana livia
    Încă nu există evaluări
  • 5.2. Elementele Clasei
    5.2. Elementele Clasei
    Document25 pagini
    5.2. Elementele Clasei
    Русские Трейлеры
    Încă nu există evaluări
  • TI Cap
    TI Cap
    Document471 pagini
    TI Cap
    Данилов Алина
    Încă nu există evaluări
  • eduturile - копия
    eduturile - копия
    Document19 pagini
    eduturile - копия
    Данилов Алина
    Încă nu există evaluări
  • Agentii de Publicitate
    Agentii de Publicitate
    Document12 pagini
    Agentii de Publicitate
    Данилов Алина
    Încă nu există evaluări
  • Laborator 2
    Laborator 2
    Document3 pagini
    Laborator 2
    Данилов Алина
    Încă nu există evaluări
  • Laborator 3
    Laborator 3
    Document3 pagini
    Laborator 3
    Данилов Алина
    Încă nu există evaluări
  • Articol
    Articol
    Document5 pagini
    Articol
    Данилов Алина
    Încă nu există evaluări
  • Laborator 1
    Laborator 1
    Document9 pagini
    Laborator 1
    Данилов Алина
    Încă nu există evaluări
  • De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    Document4 pagini
    De Exemplu:: În Ce Constă Supradefinirea Metodelor?
    Данилов Алина
    Încă nu există evaluări
  • Arme de Nimicire În Masă
    Arme de Nimicire În Masă
    Document18 pagini
    Arme de Nimicire În Masă
    Данилов Алина
    Încă nu există evaluări
  • Etica Lecția 1 2 3 Teme Pe Acasă
    Etica Lecția 1 2 3 Teme Pe Acasă
    Document4 pagini
    Etica Lecția 1 2 3 Teme Pe Acasă
    Данилов Алина
    Încă nu există evaluări
  • Bazele Compoziției
    Bazele Compoziției
    Document8 pagini
    Bazele Compoziției
    Данилов Алина
    Încă nu există evaluări
  • 9 Clase Abstracte
    9 Clase Abstracte
    Document3 pagini
    9 Clase Abstracte
    Данилов Алина
    Încă nu există evaluări
  • 1 Lectie Generalitati BC 2021
    1 Lectie Generalitati BC 2021
    Document44 pagini
    1 Lectie Generalitati BC 2021
    Данилов Алина
    Încă nu există evaluări
  • Power Point
    Power Point
    Document13 pagini
    Power Point
    Данилов Алина
    Încă nu există evaluări
  • 6 IerarhiiClase
    6 IerarhiiClase
    Document3 pagini
    6 IerarhiiClase
    Данилов Алина
    Încă nu există evaluări
  • 7 Interfete
    7 Interfete
    Document6 pagini
    7 Interfete
    Данилов Алина
    Încă nu există evaluări
  • 5 Mostenirea
    5 Mostenirea
    Document3 pagini
    5 Mostenirea
    Данилов Алина
    Încă nu există evaluări
  • Dilema Etică
    Dilema Etică
    Document1 pagină
    Dilema Etică
    Данилов Алина
    Încă nu există evaluări
  • 4 Serializare
    4 Serializare
    Document8 pagini
    4 Serializare
    Данилов Алина
    Încă nu există evaluări
  • S. E. Antropogene
    S. E. Antropogene
    Document3 pagini
    S. E. Antropogene
    Данилов Алина
    Încă nu există evaluări
  • Etica În Politică
    Etica În Politică
    Document3 pagini
    Etica În Politică
    Данилов Алина
    Încă nu există evaluări
  • Hjufcjn
    Hjufcjn
    Document9 pagini
    Hjufcjn
    Iulia
    Încă nu există evaluări
  • Lucru Individual
    Lucru Individual
    Document2 pagini
    Lucru Individual
    Данилов Алина
    Încă nu există evaluări
  • Laborator 4
    Laborator 4
    Document4 pagini
    Laborator 4
    Данилов Алина
    Încă nu există evaluări
  • 4 Serializare
    4 Serializare
    Document8 pagini
    4 Serializare
    Данилов Алина
    Încă nu există evaluări
  • Constructori
    Constructori
    Document4 pagini
    Constructori
    Ciobanu Stanislav
    Încă nu există evaluări
  • 1 10 20 StiluriProgramare
    1 10 20 StiluriProgramare
    Document7 pagini
    1 10 20 StiluriProgramare
    Данилов Алина
    Încă nu există evaluări
  • Laborator NR 3 SGBD
    Laborator NR 3 SGBD
    Document3 pagini
    Laborator NR 3 SGBD
    Данилов Алина
    Încă nu există evaluări