English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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
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.
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
In Java, è possibile includere classi all'interno di classi, dette classi interne.
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
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.
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