Јава угнежђена статичка класа

У овом упутству ћете научити о угнежђеној статичкој класи помоћу примера. Такође ћете научити како се статичне класе разликују од унутрашњих класа.

Као што смо научили у претходним водичима, можемо да имамо класу у другој класи на Јави. Такве класе су познате као угнежђене класе. У Јави су угнежђене класе два типа:

  • Угњежђена нестатична класа (унутрашња класа)
  • Угњежђена статичка класа.

Већ смо разговарали о унутрашњим часовима у претходном туторијалу. Посетите Јава угнеждени разред ако желите да сазнате више о унутрашњим часовима.

У овом упутству ћемо научити о угнежђеним статичким класама.

Јава угнежђена статичка класа

Користимо кључну реч staticда бисмо нашу угнежђену класу учинили статичном.

Напомена: У Јави су само угнежђене класе смеле да буду статичне.

Попут редовних класа, статичне угнежђене класе могу укључивати и статичка и нестетичка поља и методе. На пример,

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

Статичне угнежђене класе су повезане са спољном класом.

Да бисмо приступили статичној угнежђеној класи, не требају нам објекти спољне класе.

Пример: Статична угнежђена класа

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

Оутпут

Ја сам гмизавац. Ја сам сисар.

У горњем програму имамо две угнежђене класе Сисари и Рептили унутар класе Животиња.

Користили смо да створимо објекат нестатичне класе Рептиле

 Animal.Reptile reptile = animal.new Reptile() 

Користили смо да бисмо креирали објекат статичке класе Маммал

 Animal.Mammal mammal = new Animal.Mammal() 

Приступ припадницима спољне класе

У Јави су статичне угнежђене класе повезане са спољном класом. Због тога статичне угнежђене класе могу приступити само члановима класе (статичка поља и методе) спољне класе.

Погледајмо шта ће се догодити ако покушамо да приступимо не-статичким пољима и методама спољне класе.

Пример: Приступ нестатичним члановима

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

Оутпут

Маин.јава:28: грешка: не може се наћи симбол маммал.еат (); симбол: метода еат () локација: променљиви сисар типа Маммал 1 преводилац статус излаза компајлера 1

У горњем примеру смо креирали не-статичку методу eat()унутар класе Анимал.

Ако покушамо да приступимо eat()помоћу сисара, компајлер показује грешку.

То је зато што је сисар објекат статичке класе и из статичких класа не можемо да приступимо не-статичким методама.

Статичка класа највишег нивоа

Као што је горе поменуто, само угнежђене класе могу бити статичке. Не можемо имати статичке класе највишег нивоа.

Да видимо шта ће се догодити ако покушамо да класу највишег нивоа учинимо статичном.

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

Оутпут

 Маин.јава:1: грешка: модификатор статички овде није дозвољен статичка класа Анимал (1 излазни статус компајлера грешака 1 

У горњем примеру, покушали смо да створимо статичку класу Анимал. Пошто Јава не дозвољава статичку класу највишег нивоа, добићемо грешку.

Занимљиви Чланци...