Ciao.
Ci sono un paio di cose da dire:
Esattamente come dici tu queste variabili (dette campi o variabili di istanza) sono inizializzate con 0 e null se definite FUORI dai metodi mentre le tue a ,b sono definite DENTRO il metodo main per cui vanno inizializzate altrimenti si ha l'errore.
Ma anche se tu le inizializzassi non potresti usarle in quanto main è un metodo statico , appartiene cioè all’intera classe per cui anche le variabili dovranno essere static:
class Inutile {
Inutile() {
System.out.println ( "c = " + c );
System.out.println ( "d = " + d );
}
private int c;
private String d;
}
public class abc {
static int a; // Fuori dal metodo e statica
static String b; // Fuori dal metodo e statica
public static void main( String[] args ) {
System.out.println ( "a = " + abc.a );
System.out.println ( "b = " + abc.b );
Inutile inutile = new Inutile();
}
}
Se invece le vorrai usare come variabili locali del metodo main dovrai necessariamente inizializzarle.
Infine una considerazione sul costruttore della classe Inutile: il costruttore serve a costruire un oggetto e non come una specie di metodo per cui visualizzare le variabili per cui è meglio scrivere un costruttore vuoto (o anche non scriverlo se estende una classe senza parametri) con magari un metodo toString() che me le visualizza:
class Inutile {
private int c;
private String d;
public String toString(){ // metodo
return "c = "+c+"\nd = "+d;
}
}
public class abc {
public static void main( String[] args ) {
int a=0;
String b=null;
System.out.println ( "a = " + a );
System.out.println ( "b = " + b );
Inutile inutile = new Inutile();
System.out.println ( inutile.toString());
}
}

Rispondi quotando