Quote Originariamente inviata da andbin Visualizza il messaggio
Se il programmatore non definisce alcun costruttore per una classe, il compilatore ne genera uno di "default". Questo vale in generale e non c'entra con le inner/nested class.
ok, però i costruttori di default che vengono creati per Auto e Meccanico non farebbero le stesse operazioni dei costruttori definiti per AutoNoInner e MeccanicoNoInner. E' quello che non riesco a capire, come possa rimpiazzare dei costruttori non di default con dei costruttori di default ed ottenere lo stesso risultato.

Quote Originariamente inviata da andbin Visualizza il messaggio
Comunque Meccanico è una "inner" class di Auto (non una nested "static" class)
Ma che differenza c'è tra una inner class e una nested class?
Inoltre mi sfugge il concetto di classe statica. Mi è chiaro il concetto di attributo statico (condiviso da tutti gli oggetti della classe) e di metodo statico (metodo che appartiene alla classe e non all'oggetto, quindi se non erro è invocabile con la sintassi NomeClasse.nomeMetodoStatico(); ), ma mi sfugge quello di classe statica.

Quote Originariamente inviata da andbin Visualizza il messaggio
pertanto per poter istanziare Meccanico bisognerebbe avere una istanza di Auto (non puoi istanziare Meccanico così dal nulla).
si infatti, dovrei istanziare prima un oggetto di Auto:
Auto auto = new Auto();
e poi un oggetto di Meccanico ma sfruttando l'oggetto di Auto creato prima:
Auto.Meccanico meccanico = auto.new Meccanico();