Il costruttore di "default" delle classi (escludiamo le classi anonime perché il costruttore è generato ed è più particolare) ha semplicemente queste caratteristiche:
- è "no-arg", non ha parametri.
- fa una invocazione super(); senza argomenti.
- prende lo stesso livello di accesso della classe.
Il programmatore può definirne uno esplicito praticamente uguale ... ovviamente non è quello di "default" in senso concettuale, perché sarebbe esplicitato.
Le "inner" class non sono static, ed esiste una relazione molto speciale tra la inner-class e la classe contenitore.
Le "nested" class sono static e non esiste alcuna relazione "speciale" tra la nested class e la classe contenitore.
codice:public class A { public static class B { } }
B è una nested class (non "inner"!). E la puoi istanziare facendo B b = new A.B();
Non c'è bisogno di una istanza di A, come invece accade per le inner class.
codice:public class A { public class B { } }
B ora è una inner class. Devi fare:
A a = new A();
poi
B b = a.new B();


Rispondi quotando