Clasa statică imbricată Java

În acest tutorial, veți afla despre clasa statică imbricată cu ajutorul exemplelor. De asemenea, veți afla despre diferențierea claselor statice de clasele interioare.

După cum am învățat în tutoriale anterioare, putem avea o clasă într-o altă clasă în Java. Astfel de clase sunt cunoscute sub numele de clase imbricate. În Java, clasele imbricate sunt de două tipuri:

  • Clasa nestatică imbricată (Clasa interioară)
  • Clasa statică imbricată.

Am discutat deja clasele interioare în tutorialul anterior. Accesați Java Nested Class dacă doriți să aflați despre clasele interioare.

În acest tutorial, vom afla despre clasele statice imbricate.

Clasa statică imbricată Java

Folosim cuvântul cheie staticpentru a face statica noastră imbricată statică.

Notă: În Java, numai clasele imbricate sunt permise să fie statice.

La fel ca clasele obișnuite, clasele imbricate statice pot include atât câmpuri cât și metode statice și nestatice. De exemplu,

 Class Animal ( static class Mammal ( // static and non-static members of Mammal ) // members of Animal ) 

Clasele statice imbricate sunt asociate clasei exterioare.

Pentru a accesa clasa imbricată static, nu avem nevoie de obiecte din clasa exterioară.

Exemplu: Clasa imbricată static

 class Animal ( // inner class class Reptile ( public void displayInfo() ( System.out.println("I am a reptile."); ) ) // static class static class Mammal ( public void displayInfo() ( System.out.println("I am a mammal."); ) ) ) class Main ( public static void main(String() args) ( // object creation of the outer class Animal animal = new Animal(); // object creation of the non-static class Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); // object creation of the static nested class Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); ) ) 

Ieșire

Sunt o reptilă. Sunt un mamifer.

În programul de mai sus, avem două clase de mamifere și reptile cuibărite în interiorul unei clase de animale.

Pentru a crea un obiect din clasa nestatică Reptile, am folosit

 Animal.Reptile reptile = animal.new Reptile() 

Pentru a crea un obiect din clasa statică Mammal, am folosit

 Animal.Mammal mammal = new Animal.Mammal() 

Accesarea membrilor clasei externe

În Java, clasele imbricate statice sunt asociate cu clasa exterioară. Acesta este motivul pentru care clasele statice imbricate pot accesa doar membrii clasei (câmpuri statice și metode) ale clasei exterioare.

Să vedem ce se va întâmpla dacă încercăm să accesăm câmpuri nestatice și metode ale clasei exterioare.

Exemplu: Accesarea membrilor nestatici

 class Animal ( static class Mammal ( public void displayInfo() ( System.out.println("I am a mammal."); ) ) class Reptile ( public void displayInfo() ( System.out.println("I am a reptile."); ) ) public void eat() ( System.out.println("I eat food."); ) ) class Main ( public static void main(String() args) ( Animal animal = new Animal(); Animal.Reptile reptile = animal.new Reptile(); reptile.displayInfo(); Animal.Mammal mammal = new Animal.Mammal(); mammal.displayInfo(); mammal.eat(); ) ) 

Ieșire

Main.java:28: eroare: nu se poate găsi simbolul mammal.eat (); simbol: metoda eat () locație: mamifer variabil de tip Mammal 1 eroare starea de ieșire a compilatorului 1

În exemplul de mai sus, am creat o metodă nestatică eat()în clasa Animal.

Acum, dacă încercăm să accesăm eat()folosind obiectul mamifer, compilatorul arată o eroare.

Acest lucru se datorează faptului că mamiferul este un obiect al unei clase statice și nu putem accesa metode nestatice din clase statice.

Clasa statică de nivel superior

După cum sa menționat mai sus, numai clasele imbricate pot fi statice. Nu putem avea clase statice de nivel superior.

Să vedem ce se va întâmpla dacă încercăm să facem o clasă de nivel înalt statică.

 static class Animal ( public static void displayInfo() ( System.out.println("I am an animal"); ) ) class Main ( public static void main(String() args) ( Animal.displayInfo(); ) ) 

Ieșire

 Main.java:1: eroare: modificatorul static nu este permis aici clasa statică Animal (1 starea de ieșire a compilatorului de erori 1 

În exemplul de mai sus, am încercat să creăm o clasă statică Animal. Deoarece Java nu permite clasa statică de nivel superior, vom primi o eroare.

Articole interesante...