Quellcode dieses Artikels: GitHub · hier klicken || GitEE · hier klicken
1. Grundlegende Konzepte
1. Objektorientiertes Konzept
Die Hauptidee der objektorientierten Programmierung besteht darin, jede Transaktion, die ein Problem darstellt, in verschiedene Objekte zu zerlegen. Der Zweck der Einrichtung von Objekten besteht nicht darin, einen Schritt abzuschließen, sondern das Verhalten einer Sache im gesamten Problemlösungsschritt zu beschreiben.
2. Klassen und Objekte
Objekt: Das einzige, was wirklich existiert. In der Anwendung ist das Objekt eine Kombination aus Daten und Aktion, die nicht nur Operationen ausführen, sondern auch die Ergebnisse von Operationen aufzeichnen kann.
Klasse: Ein abstraktes Konzept, bei dem es sich um die Extraktion gemeinsamer Attribute und Verhaltensweisen bestimmter Arten von Dingen handelt. Beispielsweise wird die Klasse User [name.age.gender] verwendet, um die grundlegenden Informationen von Benutzern zu beschreiben.
So verstehen Sie objektorientiert in der Java-Entwicklung: Erstellen Sie ein geeignetes Objektschnittstellen-API-System, erstellen Sie geeignete Objekte und lösen Sie geeignete Probleme. Beispielsweise hat die JDK-API Klassen definiert, und von diesen Klassen erstellte Objekte werden direkt verwendet und von benutzerdefinierten Klassen erstellt Objektverwendung Im MVC-Modus erstellen verschiedene Geschäftsfunktionen unterschiedliche Schnittstellen und Klassensysteme.
3. Eigenschaften und Methoden
Klassenvariable
Standortunterschied:
- Mitgliedsvariablen werden außerhalb der Methode innerhalb der Klasse definiert.
- Lokale Variablen werden in der Methode definiert.
Funktionsunterschied:
- Die Rolle von Mitgliedsvariablen besteht darin, die öffentlichen Eigenschaften einer Klasse von Dingen zu beschreiben.
- Die Rolle lokaler Variablen besteht darin, eine Variable für den internen Gebrauch in der Methode bereitzustellen.
Anfangswertdifferenz:
- Mitgliedsvariablen haben Standardanfangswerte.
- Lokale Variablen haben keinen Standardanfangswert und müssen initialisiert werden, bevor sie verwendet werden können.
Lebenszyklus:
- Es existiert, wenn das Objekt erstellt wird, und verschwindet, wenn das Objekt verschwindet.
- Lokale Variablen sind vorhanden, wenn die Anweisung, die die Variable erstellt, ausgeführt wird, wenn die entsprechende Methode aufgerufen wird. Sobald die lokale Variable ihren eigenen Bereich verlässt, verschwindet sie sofort aus dem Speicher.
Methode in der Klasse
Eine spezifische Beschreibung einer Klassenfunktion, die eine Klassenmethode oder eine Objektmethode sein kann;
- Klassenmethoden, auch als statische Methoden bezeichnet, werden direkt mit Klassen aufgerufen, häufig verwendeten Werkzeugklassen.
- Objektmethoden, auch Instanzmethoden genannt, werden mit Klassenobjekten, allgemeinen API-Methoden, aufgerufen.
Konstruktionsmethode
Die Funktion des Konstruktors besteht darin, das entsprechende Objekt zu initialisieren. Wenn es keinen Rückgabewerttyp gibt, muss der Funktionsname des Konstruktors mit dem Klassennamen übereinstimmen. Wenn eine Klasse einen Konstruktor nicht explizit deklariert, wird der Java-Compiler dies tun Hinzufügen eines parameterlosen Konstruktors zur Klasse. Wenn eine Klasse explizit mit einem Konstruktor geschrieben wurde, fügt der Java-Compiler keinen parameterlosen Konstruktor für die Klasse hinzu. Der Konstruktor kann sein In einer Klasse gibt es mehrere Überladungen.
4. Schnittstelle
Die Schnittstelle ist eine spezielle Klasse. Der Standardmodifikator für die Mitgliedsvariablen der Schnittstelle ist public-static-final, und die Methoden in der Schnittstelle sind abstrakte Methoden. Der Standardmodifikator ist public-abstract. Die Schnittstelle kann keine Objekte erstellen und hat keine Konstruktionsmethode. Ja, die Schnittstelle wird verwendet, wenn die Klasse implementiert wird. Wenn eine nicht abstrakte Klasse eine Schnittstelle implementiert, müssen alle Methoden in der Schnittstelle implementiert werden.
Die Rolle der Schnittstelle: die Entkopplung des Programms, die Definition der Einschränkungsspezifikation der Implementierungsklasse. Wenn Sie die Sonderfunktion erweitern müssen, kann sie auch basierend auf dem Schnittstellenformular implementiert werden.
Die Beziehung zwischen Klasse und Schnittstelle: Mehrfachrealisierungsbeziehung, die Beziehung zwischen Schnittstelle und Schnittstelle: Mehrfachvererbungsbeziehung.
5. Überladen und Umschreiben
Umschreiben der Methode
Wenn die Funktion der übergeordneten Klasse die Anforderungen der untergeordneten Klasse nicht erfüllen kann, kann die Methode neu geschrieben werden, dh die untergeordnete übergeordnete Klasse verwendet die gleichnamige Funktion, und die von der untergeordneten Klasse überschriebene Methode verwendet die Annotation @Override. Hier besteht eine Vererbungsbeziehung.
- Der Methodenname und die Parameterliste müssen konsistent sein.
- Der Berechtigungsmodifikator der Unterklasse muss größer oder gleich dem Berechtigungsmodifikator der übergeordneten Klasse sein.
- Der Rückgabewerttyp der Unterklasse muss kleiner oder gleich dem Rückgabewerttyp der übergeordneten Klasse sein.
- Der von der Unterklasse ausgelöste Ausnahmetyp sollte kleiner oder gleich dem von der übergeordneten Klasse ausgelösten Ausnahmetyp sein.
Methodenüberladung
In einer Klasse gibt es zwei oder mehr Funktionen mit demselben Namen, die als Methodenüberladungen bezeichnet werden. Die Funktionsnamen müssen konsistent sein und die Parameterlisten sind inkonsistent (die Anzahl der Parameter oder die Parametertypen sind inkonsistent).
6. Pakete und Berechtigungen
Berechtigungsmodifikator
Der Berechtigungsmodifikator steuert die Sichtbarkeit des Bereichs des geänderten Mitglieds, unterteilt in: öffentlich, privat, geschützt, Standard (keine Änderung). Auf nur public und protected kann unter verschiedenen Paketen zugegriffen werden, und auf protected muss unter Vererbungsbeziehung zugegriffen werden können.
Paket Paket
Ein Paket kann als Ordner in einem Computersystem verstanden werden, um das Problem wiederholter Konflikte von Klassennamen zu lösen. Der Paketname ist in Kleinbuchstaben geschrieben, und die Anweisung muss sich in der ersten Anweisung in der Java-Datei befinden.
2. Grundfunktionen
Paket
Blenden Sie die internen Implementierungsdetails der Klasse aus und legen Sie nur die externe Schnittstelle offen. Beispielsweise müssen alle Elementattribute (Elementvariablen) der allgemeinen Entitätsklasse im tatsächlichen Entwicklungsszenario gekapselt werden, was als Schutzbarriere zur Verhinderung des Codes dieser Klasse angesehen werden kann Auf die Daten wird zufällig über den von der externen Klasse definierten Code zugegriffen. Durch eine ordnungsgemäße Kapselung kann der Programmcode leichter verstanden und gewartet werden und die Sicherheit wird erhöht.
erben
Erstellen Sie auf der Grundlage der vorhandenen übergeordneten Klasse eine neue Klasse, dh die Unterklasse, neu. Über das Unterklassenobjekt können Sie auf die nicht privaten Elementvariablen und Elementmethoden der übergeordneten Klasse zugreifen und die nicht privaten Elementmethoden in der übergeordneten Klasse überschreiben. Die Rolle der Vererbung Dies kann die Wiederverwendbarkeit des Codes verbessern.
Polymorphismus
Polymorphismus bedeutet, dass ein Objekt viele Formen haben kann, zum Beispiel: Die Referenztypvariable der übergeordneten Klasse zeigt auf das Objekt der Unterklasse, die Referenztypvariable der Schnittstelle zeigt auf das Objekt der Schnittstellenimplementierungsklasse, diese Situation besteht in der Vererbungs- oder Realisierungsbeziehung Wenn im Fall von Polymorphismus in der untergeordneten Klasse eine Elementvariable mit demselben Namen vorhanden ist, wird auf alle Mitglieder der übergeordneten Klasse zugegriffen, mit Ausnahme von nicht statischen Funktionen mit demselben Namen.
3. Allgemeine Schlüsselwörter
1. Dieses Schlüsselwort
Das Schlüsselwort this stellt das Aufruferobjekt der Funktion dar. Wenn Elementvariablen und lokale Variablen mit demselben Namen vorhanden sind, wird standardmäßig auf die Daten der lokalen Variablen innerhalb der Methode zugegriffen. Die Daten der Elementvariablen können durch das Schlüsselwort this in einem Konstruktor angegeben werden Sie können einen anderen Konstruktor aufrufen, um das Objekt zu initialisieren.
2. Statisches Schlüsselwort
Statisch geänderte Elementvariable: Wenn Daten für alle Objekte gemeinsam genutzt werden müssen, kann eine statische Änderung verwendet werden.
Statisch geänderte Elementfunktion: Auf die statische Methode kann zugegriffen werden, ohne auf ein Objekt angewiesen zu sein. Nicht statische Elementmethoden / -variablen müssen auf bestimmten Objekten basieren, die aufgerufen werden sollen.
Statisch modifizierte Codeblöcke: Das statische Schlüsselwort wird zum Packen statischer Codeblöcke verwendet, um die Programmleistung zu verbessern. Statische Codeblöcke können an einer beliebigen Stelle in der Klasse platziert werden. Beim ersten Laden der Klasse wird jeder statische Codeblock nacheinander ausgeführt.
3. Super Schlüsselwort
Das Schlüsselwort super stellt einen Verweis auf den übergeordneten Klassenraum dar. Wenn sich in der untergeordneten Klasse Elemente mit demselben Namen befinden, greift die Unterklasse standardmäßig auf die Mitglieder der Unterklasse zu, und das Schlüsselwort super kann verwendet werden, um den Zugriff auf die Mitglieder der übergeordneten Klasse anzugeben, wenn ein Unterklassenobjekt erstellt wird , Die Standardkonstruktionsmethode der übergeordneten Klasse ohne Parameter wird zuerst aufgerufen, und die Konstruktionsmethode der übergeordneten Klasse kann durch das Schlüsselwort super angegeben werden.
4. Instanz des Schlüsselworts
Die Rolle des Schlüsselworts instanceof: Um zu bestimmen, ob ein Objekt zu einer bestimmten Kategorie gehört, müssen das Objekt und die angegebene Kategorie eine Vererbungs- oder Realisierungsbeziehung haben. Dieses Schlüsselwort wird normalerweise verwendet, um vor der erzwungenen Typkonvertierung zu beurteilen und dann die Konvertierung durchzuführen.
5. Endgültige Schlüsselwörter
Letzte geänderte Klasse: Gibt an, dass die Klasse nicht vererbt werden kann. Die Mitgliedsvariablen in der letzten Klasse können nach Bedarf auf final gesetzt werden. Beachten Sie jedoch, dass alle Mitgliedsmethoden in der letzten Klasse implizit als endgültige Methoden festgelegt werden.
Endgültige Änderungsmethode: Die Sperrmethode verhindert, dass eine geerbte Klasse ihre Bedeutung ändert. Der zweite Grund ist die Effizienz. Die endgültige Methode der übergeordneten Klasse kann von der Unterklasse nicht überschrieben werden.
Letzte geänderte Variable: Eine Mitgliedsvariable wird als Konstante markiert und kann nur einmal zugewiesen werden. Der Wert ändert sich nach der Zuweisung nicht. Wenn der Parametertyp der Funktion als endgültig deklariert wird, bedeutet dies, dass der Parameter schreibgeschützt ist.
6. Abstrakte Schlüsselwörter
Abstrakte modifizierte Klasse: Die abstrakte Klasse kann nicht instanziiert werden. Der Unterschied zwischen einer abstrakten Klasse und einer Schnittstelle besteht darin, dass die Schnittstelle keine Instanzmethoden zum Implementieren von Geschäftslogik enthalten kann, während abstrakte Klassen Instanzmethoden haben und Geschäftslogik implementieren können. Abstrakte Klassen können nicht verwendet werden Letzte Schlüsselwortänderung, da die endgültige geänderte Klasse nicht vererbt werden kann und für abstrakte Klassen abstrakte Methoden durch Vererbung implementiert werden müssen.
Abstrakte Änderungsmethode: Die abstrakte Methode hat keinen Methodenkörper, der der Schnittstellenmethode ähnelt. Die abstrakte Methode kann nicht mit privat geändert werden, da die abstrakte Methode von der Unterklasse implementiert werden muss und die abstrakte Methode nicht mit statisch geändert werden kann. Abstrakte Klasse. Abstrakte Methode ist bedeutungslos.
Viertens Szenenanalyse
1. Entwurfsmuster
Objektorientierte und Entwurfsmuster sind in den letzten Jahren sehr heiße Konzepte. Fragen, die in Interviews gestellt werden müssen. Wenn Sie Entwurfsmuster in der Programmierung verwenden möchten, müssen Sie den objektorientierten Mechanismus verstehen, der einen hohen Grad an Abstraktion und Kapselung des Problems darstellt, und Schicht für Schicht. Lösen Sie die Realisierung, verbessern Sie die Wiederverwendbarkeit, Lesbarkeit, Flexibilität und Wartbarkeit des Codes, und das Wichtigste ist, einen hohen Stil zu haben.
2. IO-Stream-System
Wenn Sie den Code objektorientierter und Entwurfsmuster verstehen möchten, können Sie sich auf das Lesen der API des E / A-Stream-Systems in Java, der Schnittstelle der obersten Ebene, der Abwärtsimplementierung, der Verpackungsklasse und der Erweiterungsklasse konzentrieren. Diese beiden Konzepte werden wirklich bis zum Äußersten verwendet. Natürlich ist der E / A-Stream der Kern der Dateiverarbeitung, und es lohnt sich auch, den Quellcode zu lesen.
3. MVC-Entwicklungsmodell
Im MVC-Entwicklungsmodell sind die Business-Layer-Schnittstelle und die Business-Layer-Implementierung, die Datenbankschnittstelle und die Datenzugriffsimplementierung auch die grundlegendste objektorientierte Verwendungsschnittstelle und Implementierungsklasse der Schnittstelle.
Fünf, Quellcode-Adresse
GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile
Empfohlene Lektüre: Beenden des Programmiersystems
Ordnungsnummer | Projektname | GitHub-Adresse | GitEE-Adresse | Empfohlen | |
---|---|---|---|---|---|
01 | Java beschreibt Entwurfsmuster, Algorithmen und Datenstrukturen | GitHub · hier klicken | GitEE · Hier klicken | ☆☆☆☆☆ | |
02 | Java Foundation, Parallelität, objektorientierte Webentwicklung | GitHub · hier klicken | GitEE · Hier klicken | ☆☆☆☆ | |
03 | Detaillierte Erläuterung des Falles der SpringCloud Microservice-Basiskomponente | GitHub · hier klicken | GitEE · Hier klicken | ☆☆☆ | |
04 | Umfassender Fall der SpringCloud-Microservice-Architektur | GitHub · hier klicken | GitEE · Hier klicken | ☆☆☆☆☆ | |
05 | Erste Schritte mit der SpringBoot Framework-Basisanwendung für Fortgeschrittene | GitHub · hier klicken | GitEE · Hier klicken | ☆☆☆☆ | |
06 | Das SpringBoot-Framework integriert und entwickelt gängige Middleware | GitHub · hier klicken | GitEE · Hier klicken | ☆☆☆☆☆ | |
07 | Grundlegender Fall von Datenverwaltung, Verteilung, Architekturdesign | GitHub · hier klicken | GitEE · Hier klicken | ☆☆☆☆☆ | |
08 | Big Data-Serien, Speicher, Komponenten, Computer und andere Frameworks | GitHub · hier klicken | GitEE · Hier klicken | ☆☆☆☆☆ |