member-classes

Von: , Frage gestellt am Mi, 9. Jan 2002

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

3 Antworten zu dieser Frage

  1. Antwort von nach 15 Minuten 0 hilfreich
    Re: member-classes

    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.

    • Antwort von nach 12 Tagen 0 hilfreich
      Re^2: member-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.
      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

  2. Antwort von nach einem Tag 0 hilfreich
    Re: member-classes

    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 ;)

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!