Ce este clasa interioară în Java?

Publicat: 2022-04-29

Conceptul de clasă interioară în Java este fundamental pentru programarea Java. În Java, o clasă imbricată și o clasă interioară sunt două idei foarte asemănătoare, dar ușor distincte de proiectare a clasei și adesea merg mână în mână.

O clasă imbricată este definită în cadrul unei alte clase și are două tipuri - clasă imbricată statică și clasă imbricată non-statică. Pe de altă parte, o clasă interioară este un tip de clasă imbricată non-statică și mai este de trei tipuri - clasă interioară membru, clasă interioară anonimă și clasă interioară locală.

Deci, ce înseamnă aceste trei tipuri de clase interioare și care este utilizarea lor? Citiți mai departe pentru a afla în acest ghid detaliat despre clasa interioară Java.

Cuprins

Înțelesul lui Inner Class în Java

O clasă imbricată non-statică sau o clasă interioară este definită în cadrul unei alte clase și are acces la membrii clasei exterioare (clasa de închidere). Dimpotrivă, o clasă imbricată statică este, de asemenea, o clasă definită în cadrul unei alte clase, dar, spre deosebire de o clasă imbricată non-statică, nu poate accesa variabilele membre ale clasei sale exterioare. În cazul unei clase imbricate non-statice, nu ni se cere să creăm o instanță a clasei exterioare. Dar în cazul unei clase interioare, trebuie mai întâi să instanțiem clasa exterioară pentru a putea instanția clasa interioară.

Sursă

Tipuri de clasă interioară în Java

În Java, clasele interne sunt de următoarele trei tipuri:

  • Membru clasa interioară
  • Clasa interioară anonimă
  • Clasa interioară locală

Acum, să înțelegem fiecare tip de clasă interioară cu exemple.

1. Membru Clasa Interioară

O clasă interioară membru în Java este o clasă imbricată non-statică creată în interiorul unei clase, dar în afara unei metode. Denumită și o clasă interioară obișnuită, o clasă interioară membru poate fi declarată cu modificatori de acces precum privat, public, implicit și protejat.

Sintaxa pentru o clasă internă de membru este următoarea:

clasa exterior{

//cod

clasa interior{

//cod

}

}

Clasa internă de membru în exemplu Java:

Mai jos este un program pentru a demonstra cum să creați o clasă interioară și să o accesați. Vom face clasa interioară privată și vom folosi metoda display_Inner() pentru a accesa clasa.

clasa DemoOuter {

int num;

// clasa interioara

clasă privată DemoInner {

public void print() {

System.out.println(„Aceasta este clasa interioară”);

}

}

// Accesarea clasei interioare din metoda din interior

void display_Inner() {

DemoInner inner = nou DemoInner();

inner.print();

}

}

clasă publică MyClass {

public static void main(String args[]) {

// Instanțierea clasei exterioare

DemoOuter outer = nou DemoOuter();

// Accesarea metodei display_Inner().

outer.display_Inner();

}

}

Ieșire: Aceasta este clasa interioară

În exemplul de mai sus, OuterDemo este clasa exterioară, InnerDemo este clasa interioară, instanțiem clasa interioară în cadrul metodei display_Inner(), care este invocată din metoda principală.

Explorați cursurile noastre populare de inginerie software

SL. Nu Programe de dezvoltare software
1 Master în Informatică de la LJMU și IIITB Programul de certificat de securitate cibernetică Caltech CTME
2 Bootcamp de dezvoltare completă Programul PG în Blockchain
3 Program Executive Postuniversitar în Dezvoltare Software - Specializare în DevOps Vezi toate cursurile de Inginerie software

2. Clasa interioară anonimă

O clasă interioară anonimă în Java este o clasă interioară declarată fără nici un nume de clasă și pentru care este creat doar un singur obiect. Clasele interne anonime în Java sunt declarate și instanțiate în același timp. Ele sunt cele mai valoroase atunci când dorim să suprascriem metoda unei clase sau interfețe.

Sintaxa pentru o clasă interioară anonimă în Java este următoarea:

AnonymousInner an_inner = nou AnonymousInner() {

public void metoda_mea() {

//cod

}

};

O clasă interioară anonimă în Java poate fi creată în două moduri:

  1. Folosind clasa
  2. Utilizarea interfeței

Clasă interioară anonimă în exemplu Java (folosind clasa):

clasa abstracta masa{

abstract void eat();

}

clasa TestAnonymousInner{

public static void main(String args[]){

Meal m=new Meal(){

void eat(){System.out.println(„Pofta bună!”);}

};

carne();

}

}

Rezultat: Pofta buna!

Clasă interioară anonimă în exemplu Java (folosind interfața):

joc de interfață{

void play();

}

clasa TestAnnonymousInner1{

public static void main(String args[]){

Joc g=Joc nou(){

public void play(){System.out.println(„Jocuri în aer liber”);}

};

g.play();

}

}

Ieșire: Jocuri în aer liber

3. Clasa interioară locală

O clasă interioară locală în Java este o clasă creată în interiorul unei metode. Ca și în cazul variabilelor locale, domeniul de aplicare al clasei interne locale rămâne restrâns în cadrul metodei.

Clasele interne locale sunt definite în interiorul unui bloc: un corp de metodă, o clauză if sau o buclă for. O clasă interioară locală nu este membru al vreunei clase de încadrare, ci, în schimb, aparține blocului în care este definită. Astfel, chiar dacă o clasă interioară locală în Java nu poate avea niciun modificator de acces asociat cu ea, o puteți marca abstract sau final. Dacă dorim să invocăm metodele unei clase interioare locale, trebuie să instanțiem clasa în interiorul metodei.

Exemplu de clasă interioară locală în Java:

Mai jos este un exemplu de program pentru a demonstra cum să instanțiezi obiectul unei clase interioare locale declarate în cadrul metodei unei clase exterioare.

pachet innerClass;

clasă publică Outer_Class

{

// O metodă de instanță a clasei Outer_Class.

afișare public void()

{

// Declarația unei clase interioare locale de metodă.

clasa Inner_Class

{

mesaj public void(){

System.out.println(„Aceasta este o clasă interioară locală!”);

}

}

// Creați o instanță a unei clase interioare locale de metodă și apelați metoda msg() folosind variabila de referință la obiect i.

Inner_Class i = new Inner_Class();

i.msg();

}

public static void main(String[] args)

{

// Creați un obiect din clasa exterioară Outer_Class.

Outer_Class o = nou Outer_Class();

o.display();

}

}

Rezultat: Aceasta este o clasă interioară locală!

Având în vedere elementele fundamentale ale clasei interne Java, să înțelegem de ce avem nevoie de ele în primul rând.

Avantajele clasei interioare Java

O clasă interioară în Java aduce trei utilități semnificative la masă. Acestea sunt după cum urmează:

1. Deoarece o clasă interioară Java poate accesa membrii de date și metodele clasei exterioare/principale, inclusiv private, aceasta reprezintă un tip specific de relație.

2. O clasă interioară Java reduce semnificativ codificarea, deoarece necesită mai puțină scriere.

3. O clasă interioară în Java grupează logic clasele și interfețele într-un singur loc, îmbunătățind astfel lizibilitatea codului și făcându-l mai ușor de întreținut.

Rezumând

Conceptul de clase imbricate simplifică și adaugă flexibilitate la crearea de clase oriunde în programarea Java. În acest sens, o clasă imbricată non-statică cunoscută sub numele de clasă interioară este deosebit de utilă, așa cum am văzut deja în discuția noastră de până acum.

Am dori să încheiem menționând două situații în care utilizarea clasei interioare pare cea mai potrivită. În primul rând, o clasă interioară Java este ideală atunci când două clase au o relație strânsă și nu sunt accesibile de nicio altă clasă. Și în al doilea rând, clasele interne sunt obișnuite în gestionarea evenimentelor de programare Java GUI. Prin urmare, clasele interne Java pot fi utilizate în siguranță acolo unde sunt implicați ascultătorii și componentele GUI ale acestora.

Te întrebi unde să înveți Java?

Certificarea upGrad PG legată de locuri de muncă în inginerie software este ceea ce cauți!

Special concepută pentru proaspeții absolvenți și ultimii ani, certificarea upGrad PG legată de locuri de muncă în inginerie software este perfectă pentru cei care doresc să învețe să programeze și să fie plasați în roluri de software de nivel de intrare. Acest program online de 5 luni va preda abilități software de top precum Java, JavaScript, HTML5, DSA, AWS, MERN și multe altele!

Repere ale programului:

  • Specializare în MERN Stack/Cloud-Native
  • Peste 500 de ore de învățare online
  • Peste 350 de ore de instruire practică
  • Peste 50 de sesiuni live
  • Cinci proiecte industriale
  • Rețea cu experți din industrie
  • Forumuri de întrebări și răspunsuri cu colegi și experți din industrie
  • Sprijin de învățare de la asistenți de predare și mentori din industrie

Înscrie-te astăzi pentru a învăța de la cei mai buni din industrie!

Care este diferența dintre clasa interioară și subclasă?

O clasă interioară este o clasă care este imbricată sau definită în cadrul unei alte clase. Pe de altă parte, o subclasă este o clasă care este derivată dintr-o altă clasă. Mai mult, în timp ce o clasă interioară poate fi accesată numai folosind referința clasei exterioare în care este imbricată, o subclasă poate fi accesată direct, cu excepția cazului în care subclasa a moștenit variabile private.

Putem scrie o clasă în interiorul unei clase în Java?

Da, putem defini o clasă în cadrul unei alte clase în Java. O astfel de clasă este cunoscută ca o clasă imbricată și ne permite să organizăm logic clasele într-un singur loc, creând astfel un cod mai ușor de întreținut și mai ușor de citit. Ca parte a clasei incluse, o clasă imbricată poate fi declarată publică, privată, pachet-privată sau protejată.

Clasa interioară Java poate fi privată?

Da, o clasă interioară Java poate fi privată. Dar odată ce o clasă interioară este declarată privată, nu poate fi accesată de la un obiect care se află în afara clasei. Clasele interne și exterioare au acces reciproc la variabilele de instanță private și la metodele private ale celeilalte. Atâta timp cât ne aflăm în clasa exterioară sau interioară, modificatorii private și public au același efect.