English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Come creare una classe statica Object senza referenziare la classe esterna in Java?

I membri statici (metodi/variabili) appartengono alla classe e verranno caricati nella memoria insieme alla classe. Puoi chiamarli senza creare un oggetto (usando il nome della classe come riferimento). C'è solo una copia del campo statico disponibile in tutta la classe, ovvero, il valore del campo statico è lo stesso in tutti gli oggetti. Puoi definire un campo statico utilizzando la parola chiave static.

Esempio

public class Sample{
   static int num = 50;
   public static void demo(){
      System.out.println("Value of num in the demo method " + Sample.num);
   }
}
public class Demo{
   public static void main(String args[]){
      System.out.println("Value of num in the main method " + Sample.num);
      Sample.demo();
   }
}

Risultato di output

Value of num in the main method 50
Valore di num nel metodo demo 50

Riferimento a un membro statico dello stesso contesto di classe

Se si desidera fare riferimento a un membro statico di una classe stessa (nel medesimo contesto), non è necessario fare riferimento alla classe, è possibile accedere direttamente al membro statico.

Esempio

public class Sample{
   static int num = 50;
   public static void demo(){
      System.out.println("Value of num in the demo method " + Sample.num);
   }
   public static void main(String args[]){
      demo();
      System.out.println(num);
   }
}

Risultato di output

Valore di num nel metodo demo 50

Classe interna

In Java, è possibile includere classi all'interno di classi, dette classi interne.

Sintassi

public class Outer{
   public class Inner{
   }
}

Quando avete una classe all'interno di un'altra classe, essa agisce solo come membro di istanza della classe esterna. Pertanto, se dichiarate una classe interna statica, è possibile accedere ai suoi membri (classe interna) utilizzando il suo nome (classe interna) -

outer_class_name.inner_class_name.members

Esempio

class OuterDemo {
   static int data = 200;
   static class InnerDemo {
      public static void my_method() {
         System.out.println("This is my nested class");
         System.out.println(OuterDemo.data);
      }
   }
}
public class StaticClassExample{
   public static void main(String args[]) {
      System.out.println(OuterDemo.data);
      // Outer.InnerDemo = new Outer.InnerDemo(); 
      OuterDemo.InnerDemo.my_method();
   }
}

Risultato di output

200
This is my nested class
200

Se cercate di referenziare un membro (statico) di una classe interna, non è necessario utilizzare il nome della classe esterna; è possibile utilizzare solo il nome della classe interna per referenziare i membri.

Esempio

class OuterDemo {
   static int data = 200;
   static class InnerDemo {
      public static void my_method() {
         System.out.println("This is my nested class");
         System.out.println(OuterDemo.data);
      }
   }
   public static void main(String args[]) {
      System.out.println(data);
      InnerDemo.my_method();
   }
}

Risultato di output

200
This is my nested class
200
Ti potrebbe interessare