clasa interioară în Java / până în prezent, am știut că membrii clasei sunt variabile, metode, constructori și blocuri de inițializare.
dar este, de asemenea, posibil să aveți o clasă sau o interfață ca membru al unei clase.
o clasă declarată în interiorul unei alte clase este cunoscută sub numele de clase imbricate în java. Domeniul de aplicare al unei clase imbricate este legat de domeniul de aplicare al clasei sale de închidere (clasa exterioară).
astfel, dacă clasa B este definită în interiorul clasei a, atunci clasa B nu poate exista independent fără clasa A. aici, clasa A este clasa exterioară sau de închidere, iar clasa B este clasa imbricată.
o clasă imbricată în java are acces la membrii ( inclusiv membrii privați) ai clasei sale de închidere. Dar, clasa de închidere nu are acces la membrii clasei imbricate.
clasa care este membră a unei alte clase poate fi statică sau non-statică. Cu alte cuvinte, există două tipuri de clase imbricate în java: statice și non-statice.
clasa membru care este declarată cu un modificator static este cunoscută sub numele de clasă imbricată statică în java.
clasa membru care este non-statică este cunoscută sub numele de clasă interioară sau clasă nestatică nestatică. Este cel mai important tip de clasă imbricată.
în acest tutorial, vom învăța doar clasa interioară în Java. Mai târziu, vom discuta despre clasa imbricată statică în tutorialul următor.
clasa interioară în Java
o clasă interioară în java este o clasă care este declarată în interiorul unei alte clase fără modificator static. Este, de asemenea, cunoscut ca o clasă imbricată non-statică în Java. Poate accesa Toți Membrii (variabile și metode) din clasa sa exterioară.
o clasă interioară nu poate avea niciun fel de membri statici. Membrii clasei interioare java pot fi:
- variabile de instanță
- metode de instanță
- Constructori
- bloc Inițializator
- clasă interioară
sintaxa clasei interioare
access modifier class OuterClassName { . . . . . . . . . . access modifier class InnerClassName { // Members of the inner class. } // Other members of the outer class.}For example:public class Test { // Here, Test is an outer class. . . . . . . // Inner class public class A { // A is inner class as a member of its outer class. . . . . } }
clasa care deține clasa interioară se numește clasă de închidere sau exterioară. Clasa de închidere este o clasă de nivel superior, în timp ce clasa interioară este membră a clasei exterioare.
relația dintre clasa exterioară și clasa interioară reprezintă relația Has-A. O relație Has-a stabilește relația dintre două clase. Este, de asemenea, cunoscut sub numele de compoziție sau agregare în Java.
când o clasă interioară este o clasă de închidere pentru o altă clasă interioară, se numește cuibărirea claselor interioare. Nu există nicio limită pentru cuibărirea claselor interioare.
în ce versiune clasa interioară a fost introdusă în Java?
clasa interioară a fost introdusă în versiunea Java 1.1 fără modificări în JVM folosit pentru a gestiona fișierele de clasă. Acesta este complet implementat cu ajutorul compilatorului Java.
compilatorul Java generează un fișier de clasă dot separat pentru fiecare clasă interioară numită Outer$Inner.clasă și pentru o clasă exterioară numită exterior.clasă. De exemplu, o clasă interioară A este compilată într-un Test de clasă numit Test$A.class.
dacă orice nume de fișier de clasă dot conține simbolul „$” în mijlocul său, acesta arată un fișier de clasă interioară. Formatul fișierelor de clasă pentru clasele interioare are același lucru cu fișierele de clasă pentru clasele exterioare.
prin urmare, JVM tratează fișierele de clasă pentru clasele interioare și clasele exterioare la fel.
caracteristici ale clasei interioare
există câteva caracteristici importante ale unei clase interioare care este după cum urmează:
1. O clasă interioară poate avea același nume ca și clasa exterioară.
2. Sfera clasei interioare este delimitată de sfera clasei sale exterioare.
3. Fără existența unui obiect sau instanță de clasă exterioară, nu va exista nicio șansă ca un obiect de clasă interioară existent.
4. O clasă interioară poate accesa direct toate variabilele și metodele clasei exterioare, inclusiv private.
5. Deoarece clasa interioară este un membru regulat al clasei exterioare la fel ca variabilele și metodele declarate în clasă.
de aceea, putem aplica toți modificatorii de acces java, cum ar fi public, implicit, protejat și privat la clasa interioară similară cu ceilalți membri ai unei clase. Dar clasa exterioară sau normală nu poate fi privată sau protejată.
6. Dacă numele variabilei clasei interioare este același cu numele variabilei clasei exterioare, putem accesa variabila clasei exterioare astfel. OuterClassName.asta.VariableName; aici aceasta reprezintă obiectul curent de clasă exterioară.
7. Clasa interioară Java este ascunsă de o altă clasă din clasa sa de închidere. Prin urmare, acesta oferă un mecanism de siguranță în programul de aplicare și scade lizibilitatea (înțelegere) a programului.
8. Un obiect al clasei interioare este adesea creat în clasa sa exterioară și nu poate fi creat din alte clase.
9. Atât obiectele din clasa exterioară, cât și cele din clasa interioară sunt create în locații de memorie separate.
sintaxa pentru a crea obiectul clasei interioare în Java
o instanță a unei clase interioare împărtășește o relație cu o instanță a unei clase exterioare. Această relație este de așa natură încât nu putem crea o instanță a clasei interioare fără a avea o instanță a clasei exterioare.
prin urmare, pentru a crea un obiect al clasei interioare, trebuie mai întâi să creați un obiect al clasei exterioare pentru a vă lega de clasa interioară. Putem crea mai multe obiecte ale unei clase interioare pentru aceeași instanță a unei clase exterioare.
sintaxa pentru a crea un obiect pentru clasa interioară este după cum urmează:
Syntax: OuterClass.InnerClass innerObject = outerObject.new InnerClass();For example:// First create an object of Outer class Test. Test t = new Test();// Second create an object of inner class A. Test.A innerObj = t.new A();
să înțelegem cum o instanță a unei clase interioare împărtășește o relație cu o instanță a unei clase exterioare cu exemple în timp real.
exemplu în timp real de clasă interioară
1. Să presupunem că există o universitate. Universitatea conține mai multe departamente, cum ar fi electronică, informatică, electrică, mecanică etc.
să presupunem că mâine, guvernul a decis să închidă această universitate din cauza activității sale ilegale se întâmplă în universitate. Dacă universitatea este închisă, toate departamentele acestei universități vor fi închise automat.
de aceea putem spune că departamentele sunt legate de universitatea sa. adică funcționalitățile lor sunt legate de universitatea sa. Deci, fără un obiect universitar existent, nu există nicio șansă de obiecte de departament existente.
deoarece departamentul este întotdeauna o parte a clasei universitare. Prin urmare, trebuie să declarăm clasa departamentului în cadrul clasei universitare.
class University { // University is outer class. . . . . . . . class Department { // Department is inner class. . . . . . . . . }}
astfel, fără un tip existent de obiect, în cazul în care nu există nici o șansă de a exista un alt tip de obiect, ar trebui să pună în aplicare clasa interior.
2. Să presupunem că există o mașină. În cadrul unei mașini, există mai multe componente individuale importante care sunt necesare. Cea mai importantă componentă a mașinii este motorul.
motorul trebuie să fie necesar pentru a face o mașină. Dar fără un obiect auto existent, nu există nici o șansă de a exista un obiect motor.
deoarece un motor este întotdeauna o parte importantă a unei mașini. Prin urmare, motorul de clasă trebuie declarat în interiorul mașinii de clasă.
class Car { . . . . . . . . . class Engine { . . . . . . . . . . }}
cele de mai sus două exemple în timp real sunt explicate pentru a obține ideile de bază ale clasei interioare. Acum vom lua următorul exemplu bazat pe Java API.
3. După cum știm că în Java există un concept de hartă în API colecții. O hartă nu este altceva decât un grup de perechi cheie-valoare. Fiecare pereche cheie-valoare se numește o intrare. Acum, fără un obiect de hartă existent, există vreo șansă de obiect de intrare existent?
răspunsul este nu, deoarece fără a exista un obiect al unei hărți, obiectul de intrare nu poate exista. De aceea, intrarea interfeței este definită în interfața hărții.
Interface Map { // Map is an outer interface. . . . . . . . . . Interface Entry { // Entry is an inner interface. . . . . . . . . . . } }
acum ați fi înțeles din exemplul de mai sus în timp real că atunci când ar trebui să utilizați o clasă interioară în programarea Java.
utilizarea clasei interioare în Java
există următoarele utilizări importante ale clasei interioare în Java.
1. Clasa interioară este o caracteristică valoroasă, deoarece ne permite să grupăm clase și interfețe într-un singur loc care aparține logic împreună.
2. Ajută la controlul vizibilității unuia în celălalt, astfel încât să poată fi mai lizibil și mai ușor de întreținut.
3. Cea mai bună utilizare a clasei interioare java este atunci când funcționalitatea sa este legată de clasa sa exterioară. Adică, fără un obiect de clasă exterioară existent, nu există nicio șansă de obiect de clasă interioară existent. Înțelegeți exemplele în timp real.
4. . Clasa interioară Java este utilă pentru a oferi securitate codului important. De exemplu, dacă declarăm clasa interioară ca privată, aceasta nu este disponibilă pentru alte clase. Aceasta înseamnă că un obiect al clasei interioare nu poate fi creat în nicio altă clasă.
să-l înțelegem cu ajutorul programului exemplu în timp real.
să presupunem că vom crea o clasă BankAcct. Pentru a obține câteva detalii despre contul bancar, definim variabilele instanță ‘ sold ‘și’ rata ‘ dobânzii în clasă.
calInterest() metoda calculează valoarea dobânzii și va afișa suma soldului. Uită-te la următorul cod sursă.
class BankAcct { // Balance and Rate of interest. private double bal; private double rate; // Calculating interest and updated balance. void calInterest() { double interest = bal * rate/100; bal += interest; System.out.println("Balance amount = " +bal); }}
după cum observați că nu există nici o securitate pentru acest cod din cauza nu folosesc orice modificatori de acces înainte de clasa BankAcct.
deoarece se află sub modificatori de acces implicit, orice programator poate crea cu ușurință un obiect al acestei clase și poate accesa membrii clasei din afara altor clase. Prin urmare, nu există nici o securitate pentru clasa BankAcct.
de exemplu, orice programator poate crea o altă clasă. El va crea o instanță a clasei BankAcct și poate schimba rata dobânzii astfel:
class Myclass { public static void main(String args ){ BankAcct ba = new BankAcct(); ba.calInterest(11.5); } }
astfel, metoda calInterest() este foarte sensibilă. Trebuie protejat de străini, deoarece conturile de sold pot fi actualizate din exterior de către orice altă persoană. Numai persoana autorizată ar trebui să poată actualiza conturile de sold.
pentru a oferi securitate calInterest() metoda și rata dobânzii, dacă am pus codul de calInterest() metoda în interiorul unei clase interioare și să-l privat, nimeni nu le poate accesa din afara clasei. Uită-te la cod.
class BankAcct { . . . . . . . . private class Interest { private double rate; void calInterest() { double interest = bal * rate/100; bal += interest; System.out.println("Balance = " +bal); } }}
acum întrebarea este cum să accesați clasa interioară?
pentru a accesa clasa interioară, vom crea o metodă contact() în interiorul clasei exterioare. În interiorul contact () Metoda, vom crea un obiect de clasă interioară și pot accesa membrii acesteia.
o persoană bancară de autentificare poate interacționa cu clasa interioară apelând metoda contact (). Când va fi apelată metoda contact (), el va fi verificat cu parolă și apoi va putea folosi clasa interioară și o va accesa.
astfel, o clasă interioară poate oferi un mecanism de siguranță codului important în Java.
tipuri de clase interioare în Java
pe baza declarației și comportamentelor, există practic patru tipuri de clase interioare în Java. Acestea sunt următoarele:
- clasa interioară normală sau regulată
- metoda clasa interioară locală
- clasa interioară anonimă
- clasa interioară statică imbricată
în acest tutorial, vom înțelege fiecare pe scurt.
1. Clasa interioară normală sau regulată: o clasă creată în interiorul unei alte clase și în afara metodei fără modificator static se numește clasă interioară regulată sau normală.
2. Metodă clasă interioară locală: o clasă declarată în cadrul unei metode a clasei exterioare se numește metodă clasă interioară locală.
3. Clasa interioară anonimă: O clasă declarată fără niciun nume se numește clasă interioară anonimă.
4. Clasă interioară imbricată statică: o clasă declarată cu modificator static într-o clasă se numește clasă interioară imbricată statică. Este, de asemenea, cunoscut ca o clasă imbricată de nivel superior. Poate accesa doar membrii statici ai clasei exterioare.
notă: clasele interioare regulate, metoda locală și anonimă sunt clase imbricate non-statice.
avantajele clasei interioare
există practic cinci avantaje ale clasei interioare în java. Acestea sunt următoarele:
1. Clasa interioară oferă o modalitate de a grupa clasele și interfețele într-un singur loc care aparține în mod logic împreună.
2. Poate accesa direct toate variabilele și metodele clasei exterioare, inclusiv private.
3. Este folosit pentru a dezvolta un cod mai lizibil și mai ușor de întreținut.
4. Este nevoie de mai puțin cod pentru a scrie.
5. Crește încapsularea.
diferența dintre clasa imbricată și clasa interioară în Java
clasa imbricată este o clasă care este definită în interiorul unei alte clase. Există două tipuri de clase imbricate: statice și non-statice. Clasa imbricată non-statică este clasa interioară.
Sper că acest tutorial a acoperit toate caracteristicile importante ale clasei interioare în java cu programe de exemplu în timp real. Sper că veți fi înțeles ideea de bază a utilizării clasei interioare în Java.
Vă mulțumim pentru lectură!!!Urmatorul membru clasa interioara in Java
clasa interioara in Java
⇒