Java beágyazott statikus osztály

Ebben az oktatóanyagban megismerheti a beágyazott statikus osztályt példák segítségével. Megtudhatja azt is, hogy a statikus osztályok miben különböznek a belső osztályoktól.

Amint azt a korábbi oktatóanyagok megismerték, van egy osztályunk a Java másik osztályán belül. Az ilyen osztályokat beágyazott osztályoknak nevezik. A Java-ban a beágyazott osztályok kétféle típusúak:

  • Beágyazott nem statikus osztály (belső osztály)
  • Beágyazott statikus osztály.

A belső osztályokat az előző bemutatóban már megvitattuk. Látogasson el a Java beágyazott osztályába, ha meg szeretné tudni a belső osztályokat.

Ebben az oktatóanyagban megismerhetjük a beágyazott statikus osztályokat.

Java beágyazott statikus osztály

A kulcsszót staticarra használjuk , hogy a beágyazott osztály statikus legyen.

Megjegyzés: A Java-ban csak a beágyazott osztályok lehetnek statikusak.

A szokásos osztályokhoz hasonlóan a statikus beágyazott osztályok egyaránt tartalmazhatnak statikus és nem statikus mezőket és módszereket. Például,

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

A statikus beágyazott osztályok a külső osztályhoz vannak társítva.

A statikus beágyazott osztály eléréséhez nincs szükségünk a külső osztály objektumaira.

Példa: Statikus beágyazott osztály

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

Kimenet

Hüllő vagyok. Emlős vagyok.

A fenti programban két fészkes osztályú emlős és hüllő van egy állat osztályon belül.

A nem statikus hüllő osztály objektumának létrehozásához használtuk

 Animal.Reptile reptile = animal.new Reptile() 

Az Emlős statikus osztály objektumának létrehozásához használtuk

 Animal.Mammal mammal = new Animal.Mammal() 

Hozzáférés a külső osztály tagjaihoz

A Java-ban statikusan beágyazott osztályok vannak társítva a külső osztályhoz. Ezért a statikus beágyazott osztályok csak a külső osztály osztálytagjaihoz (statikus mezők és módszerek) férhetnek hozzá.

Nézzük meg, mi fog történni, ha megpróbálunk hozzáférni a külső osztály nem statikus mezőihez és módszereihez.

Példa: Nem statikus tagok elérése

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

Kimenet

Main.java:28: hiba: nem található szimbólum emlős.eat (); szimbólum: method eat () location: 1-es emlős típusú változó emlős hiba fordító 1. kilépési állapota

A fenti példában létrehoztunk egy nem statikus módszert eat()az Animal osztályon belül.

Most, ha megpróbálunk hozzáférni eat()az objektumemlős használatával, a fordító hibát mutat.

Ennek oka, hogy az emlős egy statikus osztály objektuma, és a statikus osztályokból nem férhetünk hozzá a nem statikus módszerekhez.

Statikus legfelső szintű osztály

Mint fent említettük, csak a beágyazott osztályok lehetnek statikusak. Statikus legfelső szintű osztályaink nem lehetnek.

Lássuk, mi fog történni, ha megpróbálunk egy legfelsõbb osztályt statikusvá tenni.

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

Kimenet

 Main.java:1: hiba: statikus módosító nem engedélyezett itt statikus osztály Animal (1 hiba fordító 1. kilépési állapota 

A fenti példában megpróbáltunk létrehozni egy statikus osztályú állatot. Mivel a Java nem engedélyezi a statikus legfelső szintű osztályt, hibát fogunk kapni.

érdekes cikkek...