Java-Klassen und -Objekte (ausführliche Erklärung in 7.000 Wörtern!!! Damit Sie Klassen und Objekte gründlich verstehen)


Inhaltsverzeichnis

1. Vorläufiges Verständnis der Objektorientierung

1. Was ist objektorientiert?

2. Objektorientiert und prozessorientiert

(1) Traditionelles Waschverfahren

(2) Moderner Wäschereiprozess

Bearbeiten

2. Definition und Verwendung von Klassen

1. Klassendefinitionsformat

3. Instanziierung von Klassen

1. Was ist Instanziierung?

2. Klassen- und Objektbeschreibung

4. Die Verwendung davon

1. Warum dies verwenden?

Schreiben Sie einen Date-Kurs

Grund:

Lösung:

2. Was ist diese Referenz?

3. Merkmale dieser Referenz

5. Objektkonstruktion und Initialisierung

1. So initialisieren Sie das Objekt

2. Bauweise

(1) Konzept

(2) Eigenschaften

3. Standardinitialisierung

4. In-Place-Initialisierung

6. Verpackung

1. Das Konzept der Verpackung

2. Zugriffsqualifizierer

3. Paketerweiterungspaket

(1) Konzept des Pakets

(2) Importieren Sie Klassen in das Paket

(3) Maßgeschneidertes Paket

(4) Beispiele für die Kontrolle von Paketzugriffsrechten

(5) Gemeinsame Pakete

7. Statische Mitglieder

1. Lassen Sie uns noch einmal über Studenten sprechen

2. Statische Änderung von Mitgliedsvariablen

3. Statische modifizierte Member-Methode

4. Initialisierung statischer Mitgliedsvariablen

8. Codeblöcke

1. Codeblockkonzept und -klassifizierung

2. Gewöhnliche Codeblöcke

3. Konstruieren Sie Codeblöcke

4. Statischer Codeblock



1. Vorläufiges Verständnis der Objektorientierung

1. Was ist objektorientiert?

Java ist eine reine objektorientierte Sprache (Object Oriented Program, kurz OOP). In der objektorientierten Welt ist alles ein Objekt. Objektorientiert ist eine Idee zur Lösung von Problemen, die hauptsächlich auf der Interaktion zwischen Objekten beruht, um eine Sache zu vervollständigen. Die Verwendung objektorientierten Denkens für den Umgang mit Programmen entspricht eher dem Verständnis der Menschen und ist sehr benutzerfreundlich für die Gestaltung, Erweiterung und Wartung großer Programme.
 

2. Objektorientiert und prozessorientiert

(1) Traditionelles Waschverfahren

Beim herkömmlichen Wäschewaschen steht der Prozess des Wäschewaschens im Mittelpunkt. Wenn ein Glied fehlt, funktioniert es möglicherweise nicht. Darüber hinaus werden unterschiedliche Kleidungsstücke auf unterschiedliche Weise, in unterschiedlicher Zeitdauer und mit unterschiedlichen Auswringmethoden gewaschen, was die Handhabung schwieriger macht. Wenn Sie in Zukunft Ihre Schuhe waschen, ist das eine andere Möglichkeit, sie auszudrücken. Das Schreiben von Code auf diese Weise wird in Zukunft schwieriger zu erweitern oder zu warten sein.

(2) Moderner Wäschereiprozess

Insgesamt gibt es vier Objekte: Menschen, Kleidung, Wäsche und Waschmaschinen

Der gesamte Vorgang des Wäschewaschens besteht darin, die Wäsche in die Waschmaschine zu werfen, die Wäsche hineinzugeben, die Waschmaschine zu starten, und die Waschmaschine beendet den Waschvorgang und trocknet die Wäsche.

Der gesamte Prozess wird hauptsächlich durch das Zusammenspiel von vier Objekten vervollständigt: Menschen, Kleidung, Waschpulver und Waschmaschinen. Die Menschen müssen sich nicht darum kümmern, wie die Waschmaschine Kleidung wäscht oder trocknet.

Die objektorientierte Verarbeitung konzentriert sich nicht auf den Prozess des Wäschewaschens. Benutzer müssen sich nicht darum kümmern, wie die Waschmaschine Wäsche wäscht und wie sie trocknet. Sie müssen die Wäsche nur in die Waschmaschine legen und einfüllen das Waschpulver und schalten Sie den Schalter ein. Das heißt, es geschieht durch die Interaktion zwischen Objekten.

Beachten:

Prozessorientiert und objektorientiert sind keine Sprachen, sondern Methoden zur Problemlösung. Sie sind nicht gut oder schlecht und jede hat ihr eigenes spezielles Anwendungsszenario.
 

2. Definition und Verwendung von Klassen

1. Klassendefinitionsformat

Klasse Klassenname {

        Klassenattribute (Mitgliedsvariablen);

        Klassenverhalten (Mitgliedsmethoden);

}

Die in einer Klasse enthaltenen Inhalte werden als Mitglieder der Klasse bezeichnet. Attribute werden hauptsächlich zur Beschreibung von Klassen verwendet und als Mitgliedsattribute oder Klassenmitgliedsvariablen der Klasse bezeichnet. Methoden beschreiben hauptsächlich die Funktionen einer Klasse und werden als Mitgliedsmethoden der Klasse bezeichnet.
 

Beispiel:

 class WashMachine {

        //属性
        public String brand;//品牌
        public String type;//型号
        public double weight;//重量

        //行为
        public void washClothes() {
        //洗衣服
            System.out.println("洗衣功能");
        }
    }

Bitte beachten Sie, dass der Klassenname in Kamel-Schreibweise definiert wird.

Hinweise:
1. Im Allgemeinen ist in einer Datei nur eine Klasse definiert.
2. Die Klasse, in der sich die Hauptmethode befindet, muss im Allgemeinen mit public dekoriert sein (Hinweis: Eclipse findet die Hauptmethode standardmäßig in der öffentlich geänderten Klasse).
3. Die öffentlich geänderte Klasse muss mit den Dateinamen identisch sein.
4. Ändern Sie den Namen der öffentlich geänderten Klasse nicht einfach. Wenn Sie ihn ändern möchten, ändern Sie ihn über das Entwicklungstool.

 

3. Instanziierung von Klassen

1. Was ist Instanziierung?

Das Definieren einer Klasse entspricht dem Definieren eines neuen Typs auf dem Computer, ähnlich wie int und double, mit der Ausnahme, dass int und double integrierte Typen sind, die in der Java-Sprache enthalten sind, während die Klasse ein neuer, vom Benutzer definierter Typ ist. , wie oben: PetDog-Klasse und Student-Klasse. Sie sind alle Klassen (ein neu definierter Typ). Mit diesen benutzerdefinierten Typen können Sie diese Klassen verwenden, um Instanzen (oder Objekte) zu definieren.
Der Prozess der Erstellung eines Objekts mithilfe eines Klassentyps wird als Instanziierung der Klasse bezeichnet. In Java wird das Schlüsselwort new verwendet, um das Objekt mit dem Klassennamen zu instanziieren.

Beispiel:

class PetDog {
    public String name;//姓名
    public String color;//颜色

    public void wag() {
        System.out.println("摇尾巴");
    }

    public void braks() {
        System.out.println("汪汪汪");
    }

    public void print() {
        System.out.println(this.name);
        System.out.println(this.color);
    }
}
public class TestDemo {
    public static void main(String[] args) {

        PetDog petdog1 = new PetDog();
        PetDog petdog2 = new PetDog();

        petdog1.name = "阿黄";
        petdog1.color = "黄色";
        petdog1.wag();
        petdog1.braks();
        petdog1.print();

        petdog2.name = "阿黑";
        petdog2.color = "黑色";
        petdog2.wag();
        petdog2.braks();
        petdog2.print();
    }
}

Ausgabeergebnis:

Hinweis:
Das Schlüsselwort new wird verwendet, um eine Instanz eines Objekts zu erstellen.
Verwenden Sie ., um auf die Eigenschaften und Methoden im Objekt zuzugreifen.
Dieselbe Klasse kann zwei Instanzen erstellen.
 

2. Klassen- und Objektbeschreibung

1. Eine Klasse ist nur ein modellähnliches Ding, das zur Beschreibung einer Entität und zur Begrenzung der Mitglieder der Klasse verwendet wird. 2.
Eine Klasse ist ein benutzerdefinierter Typ, der zum Definieren von Variablen verwendet werden kann.
3. Eine Klasse kann für mehrere instanziiert werden Objekte, die instanziierten Objekte belegen tatsächlichen physischen Raum und speichern Klassenmitgliedsvariablen.
4. Zum Beispiel. Das Instanziieren von Objekten aus einer Klasse ist wie die Verwendung architektonischer Entwurfszeichnungen, um ein Haus in der Realität zu bauen. Eine Klasse ist wie eine Entwurfszeichnung. Sie entwirft nur das, was benötigt wird, aber es gibt kein physisches Gebäude. Ebenso ist eine Klasse nur ein Entwurf instanziiert. Objekte können tatsächlich Daten speichern und physischen Raum belegen.

4. Die Verwendung davon

1. Warum dies verwenden?

Schauen wir uns zunächst die folgenden Beispiele an:

Schreiben Sie einen Date-Kurs

Ergebnisse ausgeben

Wenn wir den formalen Parameternamen von setDate so ändern, dass er mit dem Namen der time-Mitgliedsvariablen übereinstimmt, wie sieht das Ausgabeergebnis aus?

Es wird alles 0

Grund:

Wenn wir den formalen Parameternamen so ändern, dass er mit dem Namen der Mitgliedsvariablen übereinstimmt , unterscheidet sich der Wert des formalen Parameternamens hier von dem erwarteten Wert.

Einer ist der tatsächliche Parameter, der übergeben wird, und der andere ist die Mitgliedsvariable. In der Klasse folgen wir jedoch dem Prinzip, dass lokale Variablen Vorrang haben . Die Parameter stellen hier die Mitgliedsvariablen dar. Bei der Zuweisung von Werten unten werden die formalen Parameter verwendet werden sich selbst zugewiesen. Dem Typ int ist kein Wert zugewiesen und sein Standardwert ist 0 , sodass alle Nullen gedruckt werden.

Lösung:

Wie im Bild gezeigt:

Ausgabeergebnis:

2. Was ist diese Referenz?

Diese Referenz verweist auf das aktuelle Objekt (das Objekt, das die Mitgliedsmethode aufruft, wenn die Mitgliedsmethode ausgeführt wird). Über diese Referenz wird auf alle Mitgliedsvariablenoperationen in der Mitgliedsmethode zugegriffen. Es ist nur so, dass alle Vorgänge für den Benutzer transparent sind, das heißt, der Benutzer muss sie nicht übergeben, der Compiler schließt sie automatisch ab.

Hinweis: Dies bezieht sich auf das Objekt, für das die Member-Methode aufgerufen wird.

3. Merkmale dieser Referenz


1. Der Typ davon: entspricht der Klassentypreferenz, d. h. welches Objekt aufgerufen wird, ist der Referenztyp dieses Objekts.
2. Dies kann nur in „Mitgliedsmethoden“ verwendet werden.
3. In „Mitgliedsmethoden“ Dies kann sich nur auf das aktuelle Objekt beziehen, nicht auf das aktuelle Objekt. Verweisen Sie dann auf andere Objekte.
4. Dies ist der erste versteckte Parameter der „Mitgliedsmethode“, und der Compiler übergibt ihn automatisch. Wenn die Mitgliedsmethode ausgeführt wird, wird die Der Compiler ist dafür verantwortlich, die Referenz des aufrufenden Mitgliedsmethodenobjekts an die Mitgliedsmethode zu übergeben, und diese ist für den Empfang verantwortlich


Eine einfache Demonstration auf Codeebene --->Hinweis: Die Date-Klasse auf der rechten Seite des Bildes unten kann auch kompiliert werden.

5. Objektkonstruktion und Initialisierung

1. So initialisieren Sie das Objekt

Aus den vorherigen Wissenspunkten wissen wir, dass beim Definieren einer lokalen Variablen innerhalb einer Java-Methode diese initialisiert werden muss, da sonst die Kompilierung fehlschlägt.

Das Kompilieren des obigen Codes ist sehr einfach. Legen Sie einfach einen Anfangswert für a fest, bevor Sie ihn offiziell verwenden.

Wenn es sich um ein Objekt handelt:

Sie müssen die zuvor geschriebene SetDate-Methode aufrufen, um das spezifische Datum im Objekt festzulegen. Durch die obigen Beispiele wurden zwei Probleme entdeckt:
1. Es ist mühsam, die SetDate-Methode aufzurufen, um jedes Mal, wenn das Objekt erstellt wird, ein bestimmtes Datum festzulegen. Wie sollte das Objekt initialisiert werden?
2. Lokale Variablen müssen initialisiert werden, bevor sie verwendet werden können. Warum können sie nach der Deklaration des Felds weiterhin verwendet werden, ohne einen Wert anzugeben?
 

2. Bauweise

(1) Konzept

Die Konstruktormethode (auch Konstruktor genannt) ist eine spezielle Mitgliedsmethode, deren Name mit dem Klassennamen übereinstimmen muss. Sie wird beim Erstellen des Objekts automatisch vom Compiler aufgerufen und während des gesamten Lebenszyklus des Objekts nur einmal aufgerufen.

(2) Eigenschaften

1. Der Name muss mit dem Klassennamen identisch sein.
2. Es gibt keinen Rückgabewerttyp. Das Festlegen auf „void“ funktioniert nicht.
3. Wird vom Compiler beim Erstellen eines Objekts automatisch aufgerufen und während des Vorgangs nur einmal aufgerufen Lebenszyklus des Objekts (entspricht der Geburt einer Person, jede Person kann nur einmal geboren werden)
4. Der Konstruktor kann überlastet werden (Benutzer stellen dem Konstruktor je nach Bedarf unterschiedliche Parameter zur Verfügung)

5. Wenn der Benutzer es nicht explizit definiert, generiert der Compiler einen Standardkonstruktor, und der generierte Standardkonstruktor darf keine Parameter haben.

In der obigen Date-Klasse ist kein Konstruktor definiert und der Compiler generiert standardmäßig einen Konstruktor ohne Parameter.
 

Hinweis: Sobald es vom Benutzer definiert wurde, wird es nicht mehr vom Compiler generiert. (Retten Sie den Notfall, nicht die Armen)

6. Im Konstruktor können Sie darüber andere Konstruktoren aufrufen, um den Code zu vereinfachen.

Hinweis:
①. this(...) muss die erste Anweisung im Konstruktor
② sein. Es kann keinen Zyklus bilden

7. In den meisten Fällen wird öffentlich zum Ändern verwendet, und in besonderen Situationen wird es durch privat geändert.

3. Standardinitialisierung
 

Die zweite oben aufgeworfene Frage: Warum müssen lokale Variablen bei Verwendung initialisiert werden, Mitgliedsvariablen jedoch nicht?

Um diesen Prozess zu verstehen, müssen Sie wissen, was hinter dem neuen Schlüsselwort passiert:

Es ist nur eine einfache Anweisung auf Programmebene, aber auf der JVM-Ebene müssen viele Dinge getan werden. Hier eine kurze Einführung:
1. Überprüfen Sie, ob die dem Objekt entsprechende Klasse geladen ist, und laden Sie sie, wenn nicht.
2. Weisen Sie dem Objekt Speicherplatz zu
. 3. Behandeln Sie die Parallelitätssicherheit. Problem
: Beispiel: Mehrere Threads gelten gleichzeitig für Objekte. Die JVM muss sicherstellen, dass der dem Objekt zugewiesene Speicherplatz nicht in Konflikt gerät.
4. Initialisieren Sie den zugewiesenen Speicherplatz
. Das heißt: Nachdem der Objektraum beantragt wurde, haben die im Objekt enthaltenen Mitglieder bereits ihre Anfangswerte festgelegt, z. B.:

5. Legen Sie die Objektkopfinformationen fest.
6. Rufen Sie die Konstruktormethode auf und weisen Sie jedem Mitglied des Objekts Werte zu
 

4. In-Place-Initialisierung
 

Bei der Deklaration einer Mitgliedsvariablen wird der Anfangswert direkt angegeben.

Hinweis: Nachdem der Code kompiliert wurde, fügt der Compiler alle diese Anweisungen zur Memberinitialisierung zu jedem Konstruktor hinzu.

6. Verpackung

1. Das Konzept der Verpackung

Es gibt drei Hauptmerkmale objektorientierter Programme : Kapselung, Vererbung und Polymorphismus . In der Klassen- und Objektphase liegt der Schwerpunkt der Forschung auf Kapselungseigenschaften. Was ist Kapselung? Um es einfach auszudrücken: Es handelt sich um die Details der Granatenabschirmung .
Beispiel: Bei einem komplexen Gerät wie einem Computer stehen dem Benutzer lediglich Folgendes zur Verfügung: Ein- und Ausschalten, Eingaben über die Tastatur, das Display, die USB-Buchse usw., sodass der Benutzer mit dem Computer interagieren und tägliche Aufgaben erledigen kann . Aber tatsächlich: Was der Computer wirklich ausmacht, sind CPU, Grafikkarte, Speicher und andere Hardwarekomponenten

Computerbenutzer müssen sich keine Gedanken über die internen Kernkomponenten machen, z. B. wie die Schaltkreise auf der Hauptplatine angeordnet sind, wie die CPU konstruiert ist usw. Benutzer müssen lediglich wissen, wie und wie sie den Computer einschalten über Tastatur und Maus mit dem Computer interagieren. Wenn Computerhersteller das Werk verlassen, platzieren sie daher außen eine Hülle, um die internen Implementierungsdetails zu verbergen, und stellen nur Netzschalter, Maus- und Tastaturanschlüsse nach außen, damit Benutzer mit dem Computer interagieren können.


Kapselung: Kombinieren Sie Daten und Methoden zum Betrieb von Daten organisch, verbergen Sie die Eigenschaften und Implementierungsdetails des Objekts und legen Sie nur die Schnittstelle für die Interaktion mit dem Objekt offen.
 

2. Zugriffsqualifizierer

Die Kapselung wird in Java hauptsächlich durch Klassen und Zugriffsrechte erreicht: Klassen können Daten und Methoden zur Kapselung von Daten kombinieren, was eher dem menschlichen Verständnis der Dinge entspricht, während Zugriffsrechte verwendet werden, um zu steuern, ob Methoden oder Felder direkt außerhalb der Klasse verwendet werden können Klasse. . In Java stehen vier Zugriffsqualifizierer zur Verfügung:

Zum Beispiel:
öffentlich: kann als das Aussehen einer Person verstanden werden, das für jeden sichtbar ist.
Standard: Es ist kein Geheimnis für die eigene Familie (im selben Paket), aber es ist privat für andere.
privat: nur eines Weiß, andere Leute wissen es. Weiß es überhaupt nicht


[Erklärung]
protected wird hauptsächlich bei der Vererbung verwendet.
Die Standardberechtigung bezieht sich auf: die Standardberechtigung, wenn nichts geschrieben wird.
Zugriffsberechtigungen können nicht nur die Sichtbarkeit von Mitgliedern in der Klasse einschränken, sondern auch die Sichtbarkeit der Klasse steuern.

3. Paketerweiterungspaket

(1) Konzept des Pakets

Im objektorientierten System wird das Konzept eines Softwarepakets vorgeschlagen. Um Klassen besser verwalten zu können, werden mehrere Klassen in einer Gruppe zusammengefasst, die als Softwarepaket bezeichnet wird. Etwas ähnlich einem Verzeichnis. Zum Beispiel: Um die Songs auf Ihrem Computer besser zu verwalten, ist es eine gute Möglichkeit, Songs mit denselben Attributen in derselben Datei abzulegen, oder Sie können die Musik auch in einem bestimmten Ordner detaillierter klassifizieren.

In Java wurden auch Pakete eingeführt. Pakete sind die Verkörperung des Kapselungsmechanismus für Klassen, Schnittstellen usw. und eine gute Möglichkeit, Klassen oder Schnittstellen zu organisieren. Beispielsweise möchten Klassen in einem Paket nicht von Klassen verwendet werden in anderen Paketen verwenden. Auch Pakete spielen eine wichtige Rolle: Klassen mit demselben Namen dürfen im selben Projekt existieren, solange sie sich in verschiedenen Paketen befinden.

(2) Importieren Sie Klassen in das Paket

Java stellt uns viele vorgefertigte Klassen zur Verfügung, zum Beispiel die Date-Klasse: Sie können java.util.Date verwenden, um die Date-Klasse in das java.util-Paket zu importieren.

Diese Schreibweise ist jedoch problematischer. Sie können das Paket mit der Importanweisung importieren.

Wenn Sie andere Klassen in java.util verwenden müssen, können Sie import java.util verwenden.*

Wir empfehlen jedoch , den zu importierenden Klassennamen explizit anzugeben , da es sonst immer noch zu Konflikten kommen kann.

In diesem Fall müssen Sie den vollständigen Klassennamen verwenden

Mit import static können Sie statische Methoden und Felder in das Paket importieren

Vorsichtsmaßnahmen:

Es gibt einen großen Unterschied zwischen Import und #include von C++. C++ muss #include enthalten, um den Inhalt anderer Dateien einzuführen, Java erfordert dies jedoch nicht.

Der Import dient lediglich dazu, das Schreiben von Code komfortabler zu gestalten. Der Import ähnelt eher dem Namespace und der Verwendung von C++

(3) Maßgeschneidertes Paket
 

Grundregeln
① Fügen Sie oben in der Datei eine Paketanweisung hinzu, um anzugeben, in welchem ​​Paket sich der Code befindet.
② Der Paketname muss so eindeutig wie möglich angegeben werden, normalerweise in der umgekehrten Form des Domänennamens des Unternehmens (z. B. com .bit.demo1).
③Der Paketname muss mit dem Codepfad übereinstimmen. Wenn Sie beispielsweise ein Paket von com.bit.demo1 erstellen, gibt es einen entsprechenden Pfad com/bit/demo1 zum Speichern des Codes. ④Wenn eine
Klasse Wenn keine Paketanweisung vorhanden ist, wird die Klasse in einem Standardpaket abgelegt.


Arbeitsschritte
① Erstellen Sie zunächst ein neues Paket in IDEA: Klicken Sie mit der rechten Maustaste auf src -> Neu -> Paket

②Geben Sie den Paketnamen in das Popup-Dialogfeld ein, zum Beispiel com.bit.demo1

③Erstellen Sie eine Klasse im Paket, klicken Sie mit der rechten Maustaste auf den Paketnamen -> Neu -> Klasse und geben Sie dann den Klassennamen ein.

④An diesem Punkt können Sie sehen, dass die Verzeichnisstruktur auf unserer Festplatte automatisch von IDEA erstellt wurde

⑤Gleichzeitig haben wir auch gesehen, dass oben in der neu erstellten Datei Test.java eine Paketanweisung erschien.

(4) Beispiele für die Kontrolle von Paketzugriffsrechten

Die Computer-Klasse befindet sich im Paket com.bit.demo1 und der TestComputer befindet sich im Paket com.bit.demo2:

(5) Gemeinsame Pakete

1. java.lang: Häufig verwendete Basisklassen (String, Object) im System. Dieses Paket wird ab JDK1.1 automatisch importiert.
2. java.lang.reflect: Java Reflection-Programmierpaket;
3. java.net: Netzwerkprogrammierungs-Entwicklungspaket.
4. java.sql: Unterstützungspaket für die Datenbankentwicklung.
5. java.util: ist ein von Java bereitgestelltes Toolpaket. (Sammlungsklassen usw.) Sehr wichtig
6. java.io: I/O-Programmier-Entwicklungskit.

7. Statische Mitglieder


1. Lassen Sie uns noch einmal über Studenten sprechen
 

Verwenden Sie die im vorherigen Artikel eingeführte Schülerklasse, um drei Objekte s1, s2 und s3 zu instanziieren. Jedes Objekt hat seinen eigenen eindeutigen Namen, Geschlecht, Alter, Notenpunkt und andere Mitgliedsinformationen. Diese Informationen werden zur Beschreibung verschiedener Schüler verwendet. Wie folgt :

Angenommen, drei Schüler sind in derselben Klasse, dann müssen sie sich im selben Klassenzimmer befinden. Können wir der Klasse eine Mitgliedsvariable hinzufügen, um den Klassenraum zu speichern, in dem sich die Schüler im Unterricht befinden, da sie sich im selben Klassenzimmer befinden? Die Antwort ist nein.


Jedes Objekt enthält eine Kopie der zuvor in der Student-Klasse definierten Mitgliedsvariablen (sogenannte Instanzvariablen) , da diese Informationen zur Beschreibung bestimmter Studenten verwendet werden müssen. Jetzt möchten wir das Klassenzimmer darstellen, in dem die Schüler am Unterricht teilnehmen. Die Attribute dieses Klassenzimmers müssen nicht in jedem Schülerobjekt gespeichert werden, sondern müssen von allen Schülern gemeinsam genutzt werden. In Java werden durch statische Elemente geänderte Mitglieder als statische Mitglieder oder Klassenmitglieder bezeichnet. Sie gehören nicht zu einem bestimmten Objekt und werden von allen Objekten gemeinsam genutzt.
 

2. Statische Änderung von Mitgliedsvariablen

Durch statische Elemente geänderte Mitgliedsvariablen werden als statische Mitgliedsvariablen bezeichnet. Das größte Merkmal statischer Mitgliedsvariablen besteht darin, dass sie nicht zu einem bestimmten Objekt gehören und von allen Objekten gemeinsam genutzt werden.
 

[Eigenschaften statischer Mitgliedsvariablen]
① Es gehört nicht zu einem bestimmten Objekt, sondern ist ein Attribut der Klasse. Es wird von allen Objekten gemeinsam genutzt und nicht im Raum eines bestimmten Objekts gespeichert. ② Es kann über darauf zugegriffen
werden Objekt oder Klassenname, aber im Allgemeinen wird empfohlen, den Klassennamen für den Zugriff zu verwenden.
③ Klassenvariablen werden im Methodenbereich gespeichert.
④ Der Lebenszyklus folgt dem Leben der Klasse (dh: erstellt, wenn die Klasse geladen wird, und zerstört, wenn die Klasse wird entladen)

Führen Sie den obigen Code im Debugging-Modus aus. Anschließend können Sie im Überwachungsfenster sehen, dass die statischen Mitgliedsvariablen nicht in einem bestimmten Objekt gespeichert sind.

3. Statische modifizierte Member-Methode

Im Allgemeinen werden die Datenelemente in einer Klasse auf „privat“ und die Elementmethoden auf „öffentlich“ festgelegt. Wie kann nach dem Festlegen auf das Attribut „classRoom“ in der Klasse „Student“ außerhalb der Klasse zugegriffen werden?

Wie soll auf statische Attribute zugegriffen werden?
In Java werden durch statische Elemente geänderte Mitgliedsmethoden als statische Mitgliedsmethoden bezeichnet. Sie sind Methoden der Klasse und nicht eindeutig für ein Objekt. Der Zugriff auf statische Mitglieder erfolgt im Allgemeinen über statische Methoden.

[Statische Methodeneigenschaften]

① Es gehört nicht zu einem bestimmten Objekt, es ist eine Klassenmethode.
② Es kann über das Objekt oder über den Klassennamen aufgerufen werden. statischer Methodenname (...). Es wird eher empfohlen, Letzteres zu verwenden.
③ Sie In der statischen Methode kann nicht auf eine nicht statische Methode zugegriffen werden. Mitgliedsvariablen

④ In einer statischen Methode kann keine nicht statische Methode aufgerufen werden, da nicht statische Methoden diesen Parameter haben und diese Referenz beim Aufruf einer statischen Methode nicht übergeben werden kann.         

⑤Statische Methoden können nicht überschrieben und nicht zur Implementierung von Polymorphismus verwendet werden

4. Initialisierung statischer Mitgliedsvariablen
 

Hinweis: Statische Mitgliedsvariablen werden im Konstruktor im Allgemeinen nicht initialisiert. Was im Konstruktor initialisiert wird, sind die Instanzattribute, die sich auf das Objekt beziehen.


Es gibt zwei Arten der Initialisierung statischer Mitgliedsvariablen: In-Place-Initialisierung und statische Codeblockinitialisierung.
 

①In-Place-Initialisierung: In-Place-Initialisierung bezieht sich auf: Geben Sie den Anfangswert direkt beim Definieren an

②Initialisierung des statischen Codeblocks (weiterlesen)

8. Codeblöcke

1. Codeblockkonzept und -klassifizierung

Ein mit {} definierter Code wird als Codeblock bezeichnet. Entsprechend der Position und den im Codeblock definierten Schlüsselwörtern kann er in die folgenden vier Typen unterteilt werden:
        ① Gewöhnlicher Codeblock
        ② Konstruktionsblock
        ③ Statischer Block
        ④ Synchroner Codeblock (hier nicht besprochen)

2. Gewöhnliche Codeblöcke

Diese Verwendung ist weniger verbreitet
 

3. Konstruieren Sie Codeblöcke

Baustein: Ein in einer Klasse definierter Codeblock (ohne Modifikatoren). Auch genannt: Instanzcodeblock. Konstruktionscodeblöcke werden im Allgemeinen zum Initialisieren von Instanzmitgliedsvariablen verwendet.

4. Statischer Codeblock

Mit Static definierte Codeblöcke werden als statische Codeblöcke bezeichnet. Wird im Allgemeinen zum Initialisieren statischer Mitgliedsvariablen verwendet.

Hinweise
① Unabhängig davon, wie viele Objekte von einem statischen Codeblock generiert werden, wird er nur einmal ausgeführt.
② Statische Mitgliedsvariablen sind Attribute der Klasse. Sie werden also geöffnet und initialisiert, wenn die JVM die Klasse lädt.
③ Wenn eine Klasse mehrere enthält Statische Codeblöcke. Beim Kompilieren von Code führt (zusammenführen) der Compiler einen nach dem anderen in der definierten Reihenfolge aus.
④Der Instanzcodeblock wird nur ausgeführt, wenn ein Objekt erstellt wird.
 

Ich denke du magst

Origin blog.csdn.net/cool_tao6/article/details/132779013
Empfohlen
Rangfolge