Java sisestatud staatiline klass

Selles õpetuses saate näidete abil teada pesastatud staatilise klassi kohta. Samuti saate teada, kuidas staatilised klassid erinevad sisemistest klassidest.

Nagu eelmistes õpetustes õpitud, võib meil olla klass Java teises klassis. Selliseid klasse nimetatakse pesastatud klassideks. Java-s on pesastatud klassid kahte tüüpi:

  • Pesastatud mittestaatiline klass (siseklass)
  • Pesastatud staatiline klass.

Siseklasse oleme juba eelmises õpetuses arutanud. Külastage Java pesastatud klassi, kui soovite õppida siseklasside kohta.

Selles õpetuses õpime pesastatud staatiliste klasside kohta.

Java sisestatud staatiline klass

staticPesastatud klassi staatiliseks muutmiseks kasutame märksõna .

Märkus . Java-s on staatilised ainult pesastatud klassid.

Nagu tavalised klassid, võivad ka staatilised pesastatud klassid sisaldada nii staatilisi kui ka mittestaatilisi välju ja meetodeid. Näiteks,

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

Staatilised pesastatud klassid on seotud välisklassiga.

Staatilise pesastatud klassi juurde pääsemiseks pole meil vaja välisklassi objekte.

Näide: staatiline pesastatud klass

 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(); ) ) 

Väljund

Olen roomaja. Olen imetaja.

Ülaltoodud programmis on meil looma sees kaks pesitsevat klassi imetajat ja roomajat.

Mittestaatilise klassi roomajate objekti loomiseks oleme kasutanud

 Animal.Reptile reptile = animal.new Reptile() 

Staatilise klassi Imetaja objekti loomiseks oleme kasutanud

 Animal.Mammal mammal = new Animal.Mammal() 

Juurdepääs välisklassi liikmetele

Javas on staatilised pesastatud klassid seotud välisklassiga. Seetõttu saavad staatilised pesastatud klassid juurde pääseda ainult välisklassi klassi liikmetele (staatilised väljad ja meetodid).

Vaatame, mis juhtub, kui proovime juurde pääseda välisklassi mittestaatilistele väljadele ja meetoditele.

Näide: juurdepääs mittestaatilistele liikmetele

 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(); ) ) 

Väljund

Main.java:28: viga: sümbolit emlter.eat () ei leia; sümbol: meetod eat () asukoht: Imetaja 1 tüüpi muutuja imetaja viga kompilaatori väljumise olek 1

Ülaltoodud näites oleme looma eat()klassi sisse loonud mittestaatilise meetodi .

Kui nüüd proovime eat()objekti imetaja abil juurde pääseda , näitab kompilaator viga.

Selle põhjuseks on see, et imetaja on staatilise klassi objekt ja me ei pääse staatilistest klassidest mittestaatilistele meetoditele juurde.

Staatiline tipptase

Nagu eespool mainitud, võivad staatilised olla ainult pesastatud klassid. Meil ei saa olla staatilisi tipptaseme klasse.

Vaatame, mis juhtub, kui proovime tipptasemel klassi staatiliseks muuta.

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

Väljund

 Main.java:1: tõrge: staatiline modifikaator pole siin lubatud staatiline klass Animal (1 viga kompilaatori väljumise olek 1 

Ülaltoodud näites oleme püüdnud luua staatilise klassi Animal. Kuna Java ei luba staatilist tippklassi, saame vea.

Huvitavad Artiklid...