13 Stimmen

Konstruktor ist statisch oder nicht statisch

Gemäß Standardbuch ist der Konstruktor eine spezielle Art von Funktion, die verwendet wird, um Objekte zu initialisieren. Da der Konstruktor als Funktion definiert ist und innerhalb einer Klasse eine Funktion nur zwei Typen haben kann - entweder statisch oder nicht statisch -, frage ich mich, was ein Konstruktor ist?

1.)Da der Konstruktor ohne Objekt aufgerufen wird, muss er statisch sein

  Test test = new Test();//Test() wird ohne Objekt aufgerufen
   also muss statisch sein

Ich frage mich, wenn der Konstruktor eine statische Methode ist, wie können wir das dann häufig innerhalb des Konstruktors verwenden?

Test(){
    System.out.println(this);
}

Bedeutet die Ausgabe Test@12aw212, dass Konstruktoren nicht statisch sind?

-1voto

Aleksandr M Punkte 23947

Nicht statisch. Erfahren Sie mehr über Konstruktoren http://www.javaworld.com/jw-10-2000/jw-1013-constructors.html.

-1voto

irreputable Punkte 43667

Auch nicht.

Methoden können in 2 Typen unterteilt werden: statische/nicht statische Methoden, auch bekannte als Klassen-/Instanzmethoden.

Aber Konstruktoren sind keine Methoden.

-1voto

Statisch:

Temp t = new Temp();

Der new-Operator erstellt Speicher im Heap-Bereich und übergibt ihn implizit an den Konstruktor als Temp(this). Er initialisiert dann eine nicht statische Instanzvariable, die in einer Klasse namens this definiert ist, mit der lokalen Parametervariablen this.

Das folgende Beispiel dient nur zum Verständnis des Konzepts. Wenn jemand versucht, es zu kompilieren, wird ein Kompilierungsfehler aufgetreten.

class Temp{
    int a;
    Temp this; // vom Compiler eingefügt.
    Temp(Temp this){ // vom Compiler übergeben
        this.this = this; // initialisiere hier diese Instanzvariable.
        this.a = 10; // wenn wir nur a = 10; schreiben und alle nicht statischen Member implizit über this zugänglich sind.
        return this; // damit wir keinen Wert aus dem Konstruktor zurückgeben können.
    }
}

Der Konstruktor ist statisch, weil:

  1. Er beim Erstellen des Objekts hilft.
  2. Er ohne Objekt aufgerufen wird.

-1voto

Yatin Sharma Punkte 1

Wenn wir über eine statische Klasse sprechen, denken wir daran, dass Methoden mit dem Klassennamen aufgerufen werden. Bei einem Konstruktor wird der Konstruktor jedoch initialisiert, wenn das Objekt erstellt wird. Dies zeigt sich also als nicht statisch.

-1voto

Sumitha Punkte 1

Konstruktoren sind weder statisch (wie beim Aufruf mit dem Klassennamen) noch nicht-statisch, da sie beim Erstellen eines Objekts ausgeführt werden.

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