Warum benötigt die Object-Klasse in Java einen Nullparameter-Konstruktor?

PHPz
Freigeben: 2024-01-24 18:39:04
nach vorne
766 Leute haben es durchsucht

java中为什么 Object类要有一个空的构造函数

Warum hat die Object-Klasse in Java einen leeren Konstruktor? Andere Klassen müssen nicht explizit parameterlose Konstruktoren definieren, da sie die Object-Klasse und damit die Object-Konstruktormethode erben.

Object ist die übergeordnete Klasse aller Klassen, es gibt keine anderen Klassen, die es erben, daher muss es einen Konstruktor ohne Argumente für die Instanziierung haben.

Java ist eine plattformübergreifende objektorientierte Programmiersprache mit hervorragender Vielseitigkeit, Effizienz, Plattformportabilität und Sicherheit. Es wird häufig in PCs, Rechenzentren, Spielekonsolen, wissenschaftlichen Supercomputern, Mobiltelefonen und im Internet eingesetzt. Gleichzeitig verfügt Java über die größte professionelle Entwicklergemeinschaft der Welt und bietet eine solide Grundlage für seine weitere Entwicklung und Innovation.

Objektobjekte werden oft verwendet, um einige Objekte um uns herum in der realen Welt nachzuahmen.

Ein Softwareobjekt ist ein Modell eines realen Objekts mit Zustand und Verhalten. Der Status wird durch Variablen verwaltet, die durch Benutzerkennungen benannt werden. Methoden sind mit einem Objekt verknüpfte Funktionen, die das Verhalten des Objekts ausführen. Daher ist ein Softwareobjekt ein Modell, das den Zustand durch Variablen aufrechterhält und das Verhalten durch Methoden ausführt.

Objekte sind der Schlüssel zum Verständnis objektorientierter Technologie. Vor dem Lernen können Sie reale Objekte wie Hunde, Tische, Fernseher, Fahrräder usw. beobachten. Diese Objekte haben zwei gemeinsame Eigenschaften: Zustand und Verhalten. Hunde haben beispielsweise ihre eigenen Zustände (wie Name, Farbe, Fruchtbarkeit, Hunger usw.) und Verhaltensweisen (wie Schwanzwedeln). Ebenso verfügt ein Fahrrad über einen Zustand (z. B. aktueller Gang, Räder usw.) und ein Verhalten (z. B. Bremsen, Beschleunigen, Abbremsen und Gangwechsel). Durch die Beobachtung dieser Objekte können wir die objektorientierte Technologie besser verstehen.

Was bedeutet es, einen leeren C-Konstruktor-Funktionskörper zu schreiben?

Objektinstanziierung und Dateninitialisierung erfolgen normalerweise über Konstruktoren. In Java erben alle Klassen von der Object-Klasse, sodass der leere Parameterkonstruktor der Object-Klasse standardmäßig geerbt wird. Das bedeutet, dass selbst dann, wenn Sie keinen Nullkonstruktor schreiben, dieser immer noch existiert. Allerdings werden parametrisierte Konstruktoren im Allgemeinen von Entwicklern selbst geschrieben. Der parametrisierte Konstruktor funktioniert ähnlich wie der Konstruktor mit leeren Parametern, kann jedoch Parameter empfangen und einige spezifische Initialisierungsvorgänge ausführen. Daher ermöglichen parametrisierte Konstruktoren mehr Flexibilität bei der Initialisierung der Daten eines Objekts. Zusammenfassend ist der leere Parameterkonstruktor der von der Object-Klasse geerbte Standardkonstruktor, während der parametrisierte Konstruktor vom Entwickler selbst geschrieben wird und Parameter empfangen und bestimmte Initialisierungsvorgänge ausführen kann.

Lassen Sie mich Ihnen ein Beispiel zur Veranschaulichung geben

Es gibt eine Klasse Monitor mit den Attributen String height;String

Breite

public Monitor(){}

public Monitor(String height,String width){}

Eine Konstruktormethode mit einem leeren Parameter und einer mit Parametern

In der Hauptmethode führe ich die Initialisierungsaktion durch

Monitor monitor=new Monitor();

Diese Struktur erstellt nur das Anzeigeobjekt und seine Eigenschaften haben keinen Wert. Sie können ihm auch manuell Werte zuweisen

Zum Beispiel: monitor.height=100;

monitor.width=200;

Anders ist es, wenn man solche mit Ginseng verwendet, man muss sich um viel weniger Sorgen machen

Monitor monitor2=neuer Monitor("100","200");

Hier muss ich nur die Parameter eingeben, die ich direkt eingeben möchte, um meinen Attributen Werte zuzuweisen. Spart das viel Arbeit?

Das ist sein Vorteil!

Antwort abgeschlossen!

Der Konstruktor ist eine spezielle Methode, die hauptsächlich dazu verwendet wird, das Objekt beim Erstellen zu initialisieren, dh den Objektmitgliedsvariablen Anfangswerte zuzuweisen

Wird immer zusammen mit dem neuen Operator in Anweisungen verwendet, die Objekte erstellen. Eine spezielle Klasse kann über mehrere Konstruktoren verfügen. Sie können anhand der Anzahl der Parameter oder der Art der Parameter, d. h. der Überladung von Konstruktoren, unterschieden werden

Der Unterschied zwischen Konstruktor und anderen Methoden

1. Der Name des Konstruktors muss genau mit dem Klassennamen übereinstimmen, während die allgemeine Methode nicht mit dem Klassennamen identisch sein darf.

2. Die Funktion des Konstruktors wird hauptsächlich verwendet, um den Initialisierungsstatus zu definieren, wenn das Objekt der Klasse erstellt wird. Er hat keinen Rückgabewert und kann nicht mit void geändert werden. Dadurch wird sichergestellt, dass nichts automatisch zurückgegeben wird haben alle Select. Und andere Methoden haben Rückgabewerte, obwohl der Methodenkörper selbst nicht automatisch etwas zurückgibt, und diese Dinge können unsicher sein.

3. Der Konstruktor kann nicht direkt aufgerufen werden, wenn das Objekt über den neuen Operator aufgerufen wird

4. Beim Definieren einer Klasse wird normalerweise der Konstruktor der Klasse angezeigt, und die Initialisierungsarbeit kann in der Funktion weggelassen werden. Der Java-Compiler stellt einen Standardkonstruktor bereit habe diese Funktion

Einfach ausgedrückt wird der Konstruktor zum Erstellen von Objekten verwendet. Professioneller wird dies als Instanziierung von Objekten bezeichnet.

Definition:

Klasse A

{

public A(){}

}

Verwendung:

A a=new A(); //Hier ist A() der Konstruktor.

Zu beachten ist, dass der Compiler automatisch einen leeren Konstruktor generiert und jedem Mitglied der Klasse ein Standardwert zugewiesen wird, wenn in der Klasse kein Konstruktor definiert ist.

Aber wenn in der Klasse nur ein privater Konstruktor definiert ist, wird die Klasse nicht instanziiert.

Klasse A

{

string a;

private A() { }//Diese Klasse kann nicht instanziiert werden

}

Wenn wir einen Konstruktor mit Parametern definieren, aber keinen Konstruktor ohne Parameter, müssen beim Instanziieren eines Objekts dieser Klasse Parameter bereitgestellt werden.

Klasse A

{

string a;

public A(string str) {a=str }

}

Sie können das Objekt A a=new A();

nicht instanziieren

Konstruktoren werden in dynamische Konstruktoren und statische Konstruktoren unterteilt.

Der dynamische Konstruktor weist einer Klasse oder Struktur bei der Instanziierung Speicherplatz zu und schließt die Initialisierung der Mitgliedsvariablen in der Klasse oder Struktur ab. Dynamische Konstruktoren können überladen sein, d. h. derselbe Konstruktorname verfügt über mehrere Konstruktoren unterschiedlichen Typs und unterschiedlicher Anzahl. Es gibt keinen wesentlichen Unterschied zwischen dem Konstruktor mit Parametern und dem Konstruktor ohne Parameter. Der Konstruktor mit Parametern kann durch die übergebenen Variablen gesteuert werden oder die Mitgliedsvariablen direkt initialisieren.

Statische Konstruktoren dürfen keine Parameter tragen, d. h. in einer Klasse ist nur ein statischer Konstruktor zulässig. Es wird vor dem ersten Zugriff auf ein statisches Mitglied oder der ersten Instanziierung eines dynamischen Objekts dieser Klasse aufgerufen.

c-Konstruktor generiert eine leere Zeichenfolge

#include

#include

using namespace std;

#define MAXLENGTH 1000

Klassen-CString

{

char m_buff[MAXLENGTH];

öffentlich:

CString(); //Konstruktor 1, auf leere Zeichenfolge gesetzt

~CString();

friend ostream& Operator

char-Operator[](int i)const;

};

CString::CString()

{

//m_buff[0]=NULL; Was meinst du?

memset(m_buff,0,sizeof m_buff); //String-Initialisierungsfunktion

}

char CString::operator[](int i)const

{

return m_buff[i];

}

ostream& Operator {

return Out }

CString::~CString()

{

//delete[] m_buff; Bruder, du kannst delete nicht verwenden, ohne dass new delete dynamisch zugewiesen werden muss.

}

int main()//Im Allgemeinen schreiben Sie int

{

CString s1;

cout return 0; //Sie müssen es nicht schreiben

} Wie auch immer, es wird kein Fehler gemeldet. Ob die gewünschte Funktion realisiert werden kann, ist Ihre Sache. Der Weg zu C++ ist lang, also gehen Sie langsam.

Was ist eine Konstruktormethode in Java?

Die Konstruktionsmethode ist eine spezielle Methode, die sich von der allgemeinen Methode unterscheidet:

1. Der Name des Konstruktors muss genau mit dem Klassennamen übereinstimmen, in dem er definiert ist. Es gibt keinen Rückgabetyp, nicht einmal void.

2. Die Konstruktormethode wird beim Erstellen eines Objekts mit der neuen Operation aufgerufen. Die Funktion des Konstruktors besteht darin, das Objekt zu initialisieren.

3. Kann nicht durch statische, endgültige, synchronisierte, abstrakte und native Änderungen geändert werden. Konstruktoren können nicht von Unterklassen geerbt werden.

class RectConstructor{

doppelte Länge;

doppelte Breite;

doppelte Fläche(){

Rücklauflänge*Breite;

}

//Die folgende Methode ist die sogenannte Konstruktionsmethode. Sie hat keinen Rückgabewert und der Methodenname ist derselbe wie der Klassenname~~~

RectConstructor(double width,double length){//Konstruktormethode mit Parametern

this.length=length;

this.width=width;

}

}

Tatsächlich besteht die Konstruktionsmethode darin, den Mitgliedern der Klasse Anfangswerte zuzuweisen~~~~~~~~~~~~~~

Das obige ist der detaillierte Inhalt vonWarum benötigt die Object-Klasse in Java einen Nullparameter-Konstruktor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:docexcel.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage