„Java“ įdėta statinė klasė

Šioje pamokoje naudodamiesi pavyzdžiais sužinosite apie įdėtą statinę klasę. Taip pat sužinosite, kuo statinės klasės skiriasi nuo vidinių.

Kaip sužinota ankstesnėse pamokose, galime turėti klasę kitoje „Java“ klasėje. Tokios klasės yra žinomos kaip įdėtos klasės. „Java“ sistemoje įdėtos klasės yra dviejų tipų:

  • Įdėta nestatinė klasė (vidinė klasė)
  • Lizdinė statinė klasė.

Vidines klases jau aptarėme ankstesnėje pamokoje. Apsilankykite „Java Nested Class“, jei norite sužinoti apie vidines klases.

Šioje pamokoje sužinosime apie įdėtas statines klases.

„Java“ įdėta statinė klasė

Mes naudojame raktinį žodį static, kad mūsų įdėta klasė būtų statiška.

Pastaba: „Java“ gali būti statinės tik įdėtos klasės.

Kaip ir įprastos klasės, taip ir statinėse įdėtose klasėse gali būti statiniai ir nestatiniai laukai bei metodai. Pavyzdžiui,

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

Statinės įdėtos klasės yra susietos su išorine klase.

Norėdami pasiekti statinę įdėtą klasę, mums nereikia išorinės klasės objektų.

Pavyzdys: statinė įdėta klasė

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

Rezultatas

Aš esu roplys. Aš žinduolis.

Pirmiau pateiktoje programoje mes turime du lizdus tarp žinduolių ir roplių gyvūnų klasės viduje.

Norėdami sukurti nematinės klasės roplių objektą, mes panaudojome

 Animal.Reptile reptile = animal.new Reptile() 

Norėdami sukurti statinės klasės „Žinduoliai“ objektą, naudojome

 Animal.Mammal mammal = new Animal.Mammal() 

Prieiga prie išorinės klasės narių

„Java“ programoje statinės įdėtos klasės yra susietos su išorine klase. Štai kodėl statinės įdėtos klasės gali pasiekti tik išorinės klasės narius (statinius laukus ir metodus).

Pažiūrėkime, kas nutiks, jei bandysime pasiekti ne statinius išorinės klasės laukus ir metodus.

Pavyzdys: Prieiga prie nestatinių narių

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

Rezultatas

Main.java:28: klaida: nerandu simbolio emlininkas.eat (); simbolis: metodas eat () vieta: 1 žinduolio tipo kintamasis žinduolio klaidos kompiliatoriaus išėjimo statusas 1

Ankstesniame pavyzdyje mes sukūrėme ne statinį metodą eat()gyvūnų klasėje.

Jei bandysime pasiekti eat()objektą „žinduolis“, kompiliatorius parodo klaidą.

Taip yra todėl, kad žinduolis yra statinės klasės objektas ir mes negalime prieiti prie nestatinių metodų iš statinių klasių.

Statinė aukščiausio lygio klasė

Kaip minėta aukščiau, statinės gali būti tik įdėtos klasės. Mes negalime turėti statinių aukščiausio lygio klasių.

Pažiūrėkime, kas nutiks, jei bandysime sukurti aukščiausio lygio klasiką.

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

Rezultatas

 Main.java:1: error: statinis modifikatorius čia neleidžiamas statinė klasė Animal (1 klaidos kompiliatoriaus išėjimo būsena 1 

Ankstesniame pavyzdyje mes bandėme sukurti statinę gyvūnų klasę. Kadangi „Java“ neleidžia statinės aukščiausio lygio klasės, gausime klaidą.

Įdomios straipsniai...