5. Valori Static

Metodi e attributi di classe

Sintassi: static <definire un attributo o un metodo>

Un attributo statico di una classe è condiviso da tutti gli oggetti della classe.

Un attributo statico di una classe, se pubblico, può essere acceduto senza la necessità di creare un oggetto, con la notazione <nome_classe>.<nome_attributo>.

Un metodo statico di una classe può essere invocato senza la necessità di creare un oggetto, con la notazione <nome_classe>.<nome_metodo>(<parametri>).

Il nome della classe può essere omesso, se non ci sono ambiguità.

Un metodo static può accedere solo ad attributi e metodi di tipo static.

Un metodo convenzionale può liberamente accedere ad attributi e metodi di tipo static.

Ex.

public class Shape {
	static Screen screen=new Screen(); // note the initialization static void setScreen(Screen s) {screen=s;}
	void show(Screen s) {setScreen(s);}
	public static void main(String[] args) { 
		Shape.setScreen(new Screen()); // corrected 
		Shape.show(); // wrong, show is a normal method 
		Shape s1=new Shape(), s2=new Shape();
		Screen s=new Screen();
		s1.setScreen(s);
// correct, you can call static methods on objects
// at this point s2.screen==s1.screen==s
}

Attributi costanti

Gli attributi costanti possono essere definiti applicandogli la clausola final.

final int COSTANTE = 0;

// Altro modo
final int COSTANTE;
COSTANTE = 0;