Forse inizio a capire...si spera almeno.
Il pezzo di codice incriminato è questo:
Io voglio utilizzare il metodo aggiustaMotore, anche perchè lo scopo è riparare l'auto.codice:public class Auto { private String statoMotore; public class Meccanico { public void aggiustaMotore() { statoMotore = "buono"; } } }
Così com'è, per definizione di classe innestata (e poichè non è statica), devo necessariamente creare prima un oggetto di Auto (e me ne frego di quello che fa il costruttore), poi un oggetto di Meccanico (e me ne frego anche qui di quello che fa il costruttore) e infine richiamo il metodo aggiustaMotore.
Quindi andrebbero scritte queste righe:
La classe innestata, inoltre, per definizione può accedere ai membri (anche quelli private) della classe che la contiene e quindi è lecita l'assegnazione che viene fatta a statoMotore all'interno del metodo aggiustaMotore.codice:Auto auto = new Auto(); Auto.Meccanico meccanico = auto.new Meccanico(); meccanico.aggiustaMotore();
Tutto corretto?
Ok, e se invece parliamo di classi statiche "normali" (cioè non innestate)? Cosa sono?



Rispondi quotando