Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Classe statique imbriquée Java

Classe statique imbriquée Java

Dans ce didacticiel, vous découvrirez les classes statiques imbriquées à l'aide d'exemples. Vous apprendrez également en quoi les classes statiques diffèrent des classes internes.

Comme appris dans les tutoriels précédents, nous pouvons avoir une classe à l'intérieur d'une autre classe en Java. Ces classes sont appelées classes imbriquées. En Java, les classes imbriquées sont de deux types :

Nous avons déjà discuté des classes internes dans le tutoriel précédent. Visitez Java Nested Class si vous souhaitez en savoir plus sur les classes internes.

Dans ce didacticiel, nous allons découvrir les classes statiques imbriquées.

Classe statique imbriquée Java

Nous utilisons le mot clé static pour rendre notre classe imbriquée statique.

Remarque : En Java, seules les classes imbriquées sont autorisées à être statiques.

Comme les classes régulières, les classes imbriquées statiques peuvent inclure des champs et des méthodes statiques et non statiques. Par exemple,

Class Animal {
   static class Mammal {
      // static and non-static members of Mammal
   }
   // members of Animal
} 

Les classes imbriquées statiques sont associées à la classe externe.

Pour accéder à la classe imbriquée statique, nous n'avons pas besoin des objets de la classe externe.

Exemple :classe imbriquée statique

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

   }
}

Sortie

I am a reptile.
I am a mammal.

Dans le programme ci-dessus, nous avons deux classes imbriquées Mammal et reptile à l'intérieur d'une classe Animal .

Pour créer un objet de la classe non statique Reptile, nous avons utilisé

Animal.Reptile reptile = animal.new Reptile()

Pour créer un objet de la classe statique Mammal , nous avons utilisé

Animal.Mammal mammal = new Animal.Mammal()

Accéder aux membres de la classe externe

En Java, les classes imbriquées statiques sont associées à la classe externe. C'est pourquoi les classes imbriquées statiques ne peuvent accéder qu'aux membres de la classe (champs et méthodes statiques) de la classe externe.

Voyons ce qui se passera si nous essayons d'accéder aux champs et méthodes non statiques de la classe externe.

Exemple :Accéder aux membres non statiques

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

Sortie

Main.java:28: error: cannot find symbol
    mammal.eat();
          ^
  symbol:   method eat()
  location: variable mammal of type Mammal
1 error
compiler exit status 1

Dans l'exemple ci-dessus, nous avons créé une méthode non statique eat() à l'intérieur de la classe Animal .

Maintenant, si nous essayons d'accéder à eat() en utilisant l'objet mammifère , le compilateur affiche une erreur.

C'est parce que mammifère est un objet d'une classe statique et nous ne pouvons pas accéder aux méthodes non statiques des classes statiques.

Classe statique de niveau supérieur

Comme mentionné ci-dessus, seules les classes imbriquées peuvent être statiques. Nous ne pouvons pas avoir de classes statiques de niveau supérieur.

Voyons ce qui se passera si nous essayons de rendre une classe de niveau supérieur statique.

static class Animal {
 public static void displayInfo() {
   System.out.println("I am an animal");
 }
}

class Main {
 public static void main(String[] args) {
   Animal.displayInfo();
 }
}

Sortie

Main.java:1: error: modifier static not allowed here
static class Animal {
       ^
1 error
compiler exit status 1

Dans l'exemple ci-dessus, nous avons essayé de créer une classe statique Animal . Étant donné que Java n'autorise pas les classes statiques de niveau supérieur, nous obtiendrons une erreur.


Java

  1. Mot-clé statique C#
  2. Classe imbriquée C#
  3. Mot-clé Java final
  4. Opérateur instanceof Java
  5. Classe imbriquée et interne Java
  6. Classe anonyme Java
  7. Classe Java Singleton
  8. Réflexion Java
  9. Classe Java ObjectOutputStream