O clasă interioară este o clasă care este membră a unei alte clase. Există patru tipuri de bază de clase interne în Java:
Clase interioare născute (clase interioare imbricate)
Categoriile statice Nestate sau Membru al clasei exterioare (clase statice imbricate)
Metode locale Clase interioare (clase interne în metoda locală)
Cursuri anonime (clase anonime)
1. Clasele interioare născute
O clasă interioară imbricată poate accesa orice domeniu privat sau o metodă de instanță a unei clase externe. O clasă interioară imbricată poate avea orice modificator de acces (pachet privat, pachet privat, protejat, public). Ca și clase, interfețele pot fi imbricate și au modificatori de acces.
Următorul exemplu demonstrează utilizarea unei clase interioare imbricate:
Motivul principal pentru care este necesar să se declare o variabilă locală ca un final este că variabilele locale trăiesc pe stiva, atâta timp cât metoda este pe stivă. Și în cazul utilizării unei clase interne poate fi o situație în care poate fi necesară o instanță a unei vieți interne de clasă pe heap și după părăsirea metoda, dar pentru a avea acces la variabila declarată în metoda. Pentru a face acest lucru, compilatorul poate salva o copie a unei variabile locale, care este declarat ca finală în domeniul de clasă internă pentru o utilizare viitoare.
Clasa interioară din metoda locală nu poate fi marcată privată. protejat. statice și tranzitorii. dar pot fi marcate ca fiind abstracte și finale. dar nu și pe ambele în același timp.
4. Clasele anonime interne
Clasele interne anonime sunt declarate fără a specifica numele clasei. Ele pot fi create în două moduri:
- Ca moștenitor al unei anumite clase
În codul de mai sus, creăm un obiect al unei clase interioare anonime, dar această clasă anonimă interioară este implementarea interfeței Hello.
Orice clasă internă anonimă poate implementa o singură interfață la un moment dat. De asemenea, la un moment dat puteți fie să extindeți clasa, fie să implementați interfața, dar nu simultan.
Cod de probă din articol:
Exemple de cod de la traducator:
Mai multe de pe site-ul meu
- Webinar "Cum să scrieți o recursivitate pentru a nu rasteriza și pentru a găsi un ac chiar și într-o carpa de fân"
- Webinar "Utilizarea API-ului Stream pentru lucrul cu colecțiile"
- Optimizarea sortare inserare în Java
- Webinar "De la idee la prototip pentru 1 oră"
- Webinar "Java-arcade: avem de-a face cu matrice în Java. Cele mai bune practici. "
- Webinar "Tot ce ați vrut să știți despre lambda în Java, dar v-ați fost frică să întrebați. Extended Edition. "
exemple bine scrise și foarte ușor de înțeles
Mulțumesc, lucruri bune.
Scrie mai mult!
Webinar «Cadrul colecțiilor Java sub microscop»
Găsește fără un cronometru pentru un minim de curse cei mai rapizi cai dintre cei 25