Member-classes

moin,

ich hab irgendwie ein leichtes verständnisproblem, was member-klassen angeht:

mal angenommen, ich hab folgenden code:

class A {
protected static int staticAttr;
protected int nonStaticAttr;

static class B {
public B() {

}
}

// member class
class C {
public C() {
… }
}
}

class Test {
public static void main( String[] args ) {
A.B ab = new A.B();
A.C ac = new A.C();
}
}

warum kann ich ac so nicht deklarieren/instanzieren? ich bekomme immer die fehlermeldung
„not an enclosing class : A“

mit der statischen member-klasse A.B geht das doch auch ???

ich bin echt ein wenig ratlos

danke,

Björn

ich hab irgendwie ein leichtes verständnisproblem, was
member-klassen angeht:

heisst das tatsächlich Member-Klasse? Kannte das eher als Inner Classes.

Ich denke das Problem ist einfach folgendes (habe da jetzt nicht hundertprozentig Erfahrung, könnte mich auch irren), die Klasse C ist nicht statisch deklariert, d.h. du brauchst eine Instanz von A um eine zu erzeugen.

genau, wie bruno schon sagte, eine instanz von einer geschachtelten classe kannst du nur aus einer methode der oberklasse erzeugen…

ausnahme: die klasse ist statisch…

aber die dinger sind ja eh total eklig :wink:

Ich denke das Problem ist einfach folgendes (habe da jetzt
nicht hundertprozentig Erfahrung, könnte mich auch irren), die
Klasse C ist nicht statisch deklariert, d.h. du brauchst eine
Instanz von A um eine zu erzeugen.

Hallo,

ist so auch nicht ganz korrekt.
Da C hier nur auf Sichtbarkeit innerjhalb von A gesetzt ist, kann man von ausserhalb von A nicht darauf zugreifen. Dazu braucht nichts statisch definiert werden.
Ist C public, kann man auch von ausserhalb von A eine Instanz erstellen, genau nach dem Schema, nach dem es in dem Code versucht wurde.

Dirk