383 Stimmen

Java: Statische vs. innere Klasse

Was ist der Unterschied zwischen statischen und nicht-statischen verschachtelten Klassen?

0 Stimmen

Java doc Terminologie : Verschachtelte Klassen werden in zwei Kategorien unterteilt: statische und nicht-statische. Verschachtelte Klassen, die als statisch deklariert sind, werden statische verschachtelte Klassen genannt. Nicht-statische verschachtelte Klassen werden innere Klassen genannt.

3voto

Vijay Kumar Punkte 39

Statische innere Klasse: kann statische und nicht statische Mitglieder deklarieren, kann aber nur auf statische Mitglieder ihrer Elternklasse zugreifen.

nicht statische innere Klasse: kann nur nicht statische Mitglieder deklarieren, kann aber auf statische und nicht statische Mitglieder ihrer Elternklasse zugreifen.

3 Stimmen

Es gibt keine "statische innere Klasse", und (nicht statische) innere Klassen können eine Art statischer Mitglieder deklarieren. JLS 8.1.3 : An inner class is a nested class that is not explicitly or implicitly declared static. [...] Inner classes may not declare static members, unless they are compile-time constant fields (§15.28).

3voto

kathir Punkte 39

Eine innere Klasse kann nicht statisch sein, also werde ich Ihre Frage umformulieren in "Was ist der Unterschied zwischen statischen und nicht-statischen verschachtelten Klassen?".

wie u sagte hier innere Klasse kann nicht statisch sein... ich fand den folgenden Code, der statisch gegeben wird....reason? oder die korrekt ist....

Ja, es gibt nichts in der Semantik eines statischen verschachtelten Typs, das Sie daran hindern würde, dies zu tun. Dieses Snippet läuft gut.

    public class MultipleInner {
        static class Inner {
        }   
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            new Inner();
        }
    }
}

Dies ist ein Code, der auf dieser Website veröffentlicht wurde...

für die Frage---> Kann eine statische verschachtelte Klasse mehrfach instanziiert werden?

Die Antwort war--->

Natürlich kann der verschachtelte Typ seine eigene Instanzsteuerung vornehmen (z. B. private Konstruktoren, Singleton-Muster usw.), aber das hat nichts mit der Tatsache zu tun, dass es sich um einen verschachtelten Typ handelt. Wenn es sich bei dem verschachtelten Typ um eine statische Enum handelt, können Sie ihn natürlich nicht instanziieren.

Aber im Allgemeinen kann ein statischer verschachtelter Typ mehrfach instanziiert werden.

Beachten Sie, dass ein statischer verschachtelter Typ technisch gesehen kein "innerer" Typ ist.

2voto

Emil Punkte 69

Eine statische verschachtelte Klasse interagiert mit den Instanzmitgliedern ihrer äußeren Klasse (und anderer Klassen) wie jede andere Klasse der obersten Ebene. Eine statische verschachtelte Klasse ist vom Verhalten her eine Klasse der obersten Ebene, die der Einfachheit halber in eine andere Klasse der obersten Ebene verschachtelt wurde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X