Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Classe estática aninhada em Java

Classe estática aninhada em Java


Neste tutorial, você aprenderá sobre classe estática aninhada com a ajuda de exemplos. Você também aprenderá como as classes estáticas diferem das classes internas.

Como aprendemos nos tutoriais anteriores, podemos ter uma classe dentro de outra classe em Java. Essas classes são conhecidas como classes aninhadas. Em Java, as classes aninhadas são de dois tipos:


Já discutimos as classes internas no tutorial anterior. Visite Java Nested Class se quiser aprender sobre classes internas.

Neste tutorial, aprenderemos sobre classes estáticas aninhadas.

Classe estática aninhada em Java


Usamos a palavra-chave static para tornar nossa classe aninhada estática.

Observação: Em Java, apenas classes aninhadas podem ser estáticas.

Assim como as classes regulares, as classes aninhadas estáticas podem incluir campos e métodos estáticos e não estáticos. Por exemplo,
Class Animal {
   static class Mammal {
      // static and non-static members of Mammal
   }
   // members of Animal
} 

As classes aninhadas estáticas são associadas à classe externa.

Para acessar a classe aninhada estática, não precisamos de objetos da classe externa.

Exemplo:classe aninhada estática

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

   }
}

Saída
I am a reptile.
I am a mammal.

No programa acima, temos duas classes aninhadas Mammal e Réptil dentro de uma classe Animal .

Para criar um objeto da classe não estática Reptile, usamos
Animal.Reptile reptile = animal.new Reptile()

Para criar um objeto da classe estática Mammal , Nós usamos
Animal.Mammal mammal = new Animal.Mammal()

Acessando membros da classe externa




Em Java, as classes aninhadas estáticas são associadas à classe externa. É por isso que as classes aninhadas estáticas só podem acessar os membros da classe (campos e métodos estáticos) da classe externa.

Vamos ver o que acontecerá se tentarmos acessar campos e métodos não estáticos da classe externa.

Exemplo:como acessar membros não estáticos

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

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

No exemplo acima, criamos um método não estático eat() dentro da classe Animal .

Agora, se tentarmos acessar eat() usando o objeto mamífero , o compilador mostra um erro.

É porque mamífero é um objeto de uma classe estática e não podemos acessar métodos não estáticos de classes estáticas.

Classe estática de nível superior


Como mencionado acima, apenas classes aninhadas podem ser estáticas. Não podemos ter classes estáticas de nível superior.

Vamos ver o que acontecerá se tentarmos tornar uma classe de nível superior estática.
static class Animal {
 public static void displayInfo() {
   System.out.println("I am an animal");
 }
}

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

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

No exemplo acima, tentamos criar uma classe estática Animal . Como Java não permite classes estáticas de nível superior, receberemos um erro.

Java

  1. Palavra-chave estática C#
  2. Classe aninhada C#
  3. Palavra-chave final Java
  4. Java instanceof Operator
  5. Java aninhado e classe interna
  6. Classe anônima Java
  7. Classe Java Singleton
  8. Reflexão Java
  9. Classe Java ObjectOutputStream
  10. Genéricos Java