Programmierarchitektur (06): Java objektorientiert

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.

Programmierarchitektur (06): Java objektorientiert

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 ☆☆☆☆☆   

Ich denke du magst

Origin blog.51cto.com/14439672/2540516
Empfohlen
Rangfolge