Was ist der return-Typ eines Konstruktors in java?
Da wir wissen, dass wir nicht haben, fügen Sie keine Rückkehr geben, um einen Java-Konstruktor.
class Sample{
.....
Sample(){
........
}
}
In Objective C, wenn wir erstellen einen Konstruktor gibt einen Zeiger auf seine Klasse. Aber es ist nicht zwingend, denke ich.
AClass *anObject = [[AClass alloc] init];//init is the constructor with return type a pointer to AClass
Ähnlich, Ist der Konstruktor konvertiert eine Methode, die einen Verweis auf die eigene Klasse??
Wie diese:
class Sample{
.....
Sample Sample(){
........
return this;
}
}
Weiß der compiler fügen Sie einen Rückgabetyp eine Referenz auf gleichen Klasse an den Konstruktor?
Was ist ein Konstruktor?
Jede Bezugnahme auf die Studie?
EDIT:
Eigentlich will ich die Antworten werden auf byte-code-Ebene oder JVM-Ebene oder sogar von unten.
InformationsquelleAutor der Frage sonu thomas | 2012-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Viele geantwortet haben, wie Konstruktoren definiert in Java.
In der JVM-Ebene, statische initialisers und Konstruktoren sind Methoden, die "void" zurückgeben. Statische initialisers sind statische Methoden, jedoch Konstruktoren verwenden
this
und nicht brauchen, um etwas zurückzugeben. Dies ist, da der Aufrufer ist verantwortlich für die Erstellung des Objekts (nicht der Konstruktor)Wenn Sie versuchen, erstellen Sie nur ein Objekt im byte-code, ohne Aufruf eines Konstruktors erhalten Sie ein VerifyError. Aber auf der oracle-JVM, die Sie benutzen können, ist Unsicher.allocateInstance() erstellt ein Objekt ohne Aufruf eines Konstruktors,
Den static initialiser heißt
<cinit>
welche keine Argumente entgegennimmt und den Konstruktor aufgerufen wird<init>
. Beide haben einen void-Rückgabetyp.Für den größten Teil verborgen ist die Java-developer (es sei denn, Sie sind die Erzeugung von byte-code) aber das einzige mal, wenn Sie sehen, diese "Methoden" in stack-traces (obwohl Sie nicht sehen können, einen Rückgabetyp)
InformationsquelleAutor der Antwort Peter Lawrey
Während Konstruktoren ähneln Methoden, Sie sind nicht die Methoden. Sie haben keinen Rückgabetyp, werden nicht vererbt, und können nicht ausgeblendet werden oder von Unterklassen überschrieben.
Konstruktoren aufgerufen werden, indem die Klasse-Instanz-Erstellung von Ausdrücken (im Grunde, die Verwendung von
new
) durch expliziten Aufruf aus anderen Konstruktoren (mitthis(...)
odersuper(...)
syntax), und indem der operator für die Zeichenfolgenverkettung. Es gibt keinen anderen Weg zum aufrufen eines Konstruktors (insbesondere, können Sie nicht aufgerufen werden, wie andere Methoden).Sehen Abschnitt 8.8 der Java Language Specification für mehr info.
InformationsquelleAutor der Antwort Ted Hopp
Keine aber ja, wenn es angegeben ist, dies zu tun.
Keine es nicht
Es ist die Methode, die ausgeführt wird, wenn das Objekt erstellt wird. Das ist in der Regel Schlüsselwort "new". Es Könnte einige vorläufige Aufgabe, oder etwas zurückgeben oder weisen einige Werte während der Bauphase.
InformationsquelleAutor der Antwort Starx
Konstruktoren ähneln Methoden, außer dass Sie den Namen der Klasse und keinen Rückgabetyp. Der ganze Zweck der Verwendung von Konstruktoren wird ein Objekt erzeugt (eine Instanz einer Klasse) und weisen Sie (über
new
keyword) in den Speicher (heap) und auch initialisiert alle Felder, wenn verfügbar.InformationsquelleAutor der Antwort Eng.Fouad
Konstruktoren aufgerufen werden, über die spezielle java-Schlüsselwort
new
erzeugt (und initialisiert) ein Objekt des angegebenen konkreten Typ.Ich nehme an, man könnte sagen, dass die Kombination von
new
und der gewählte Konstruktor "gibt" ein Objekt, das in java ist natürlich ein Zeiger unter der DeckeInformationsquelleAutor der Antwort Bohemian
Konstruktors liefert die Klasse Referenz der Klasse, für die Ihr genannt wird.E.g.-
Hier nach dem Aufruf des Konstruktors
A(...)
dieser Konstruktor wird wieder die Referenz vom Typ der KlasseA
an den Aufrufer( d.h.A a = new A(4)
).InformationsquelleAutor der Antwort vikasa
Den Rückgabetyp der Konstruktor der entsprechenden Klasse geben.
InformationsquelleAutor der Antwort Venkat IndianEagle
Konstruktor wird nur verwendet, um nur initialisieren der Klasse und
InformationsquelleAutor der Antwort Naresh Kumar