Dubbio esercizio

di il
2 risposte

Dubbio esercizio

Ciao , sto studiando java per un esame e ho un dubbio per quanto riguarda l'ereditarietà quando si tratta di metodi e attributi statici.
class Derivata extends Statica {
	static int i;
}

class Statica {

	static int i;
	Statica () { 
		i++; 
	}
}
	
public static void main (String[] args) {

	Statica a = new Statica();
	Derivata b = new Derivata();
	System.out.println(a.i + " " + b.i);
	// stampa 2 0
}


Non capisco perché stampi 2 0 , ero convinta stampasse 1 0 .
Qualcuno può spiegarmi il perché ?
Grazie

2 Risposte

  • Re: Dubbio esercizio

    Le variabili static sono variabili della classe, non delle istanze della classe. i è una variabile sola comune a tutte le istanze di Statica. È una specie di variabile "globale", unica per tutte le istanze della classe.

    Siccome il costruttore di Derivata deve chiamare implicitamente un costruttore di Statica, i di Statica va a 2
  • Re: Dubbio esercizio

    Ora è chiaro , grazie
Devi accedere o registrarti per scrivere nel forum
2 risposte