Heim > Java > javaLernprogramm > Detaillierte Einführung in die Java-Vererbung

Detaillierte Einführung in die Java-Vererbung

零下一度
Freigeben: 2017-07-26 16:59:39
Original
2959 Leute haben es durchsucht

1. Das Konzept der Vererbung

1. Der Mechanismus, durch den eine übergeordnete Klasse eine Unterklasse ableitet, wird Vererbung genannt.

2. Vererbung ist ein leistungsstarkes Mittel zur Wiederverwendung von Programmcode. Wenn zwischen mehreren Klassen dieselben Eigenschaften und Methoden vorhanden sind, können übergeordnete Klassen von diesen Klassen abstrahiert werden.

3. Wir müssen diese Eigenschaften und Methoden nur in der übergeordneten Klasse definieren, und die Unterklasse muss diese Eigenschaften und Methoden nicht neu definieren und kann direkt von der übergeordneten Klasse erben.

4. Durch Vererbung verfügt die Unterklasse automatisch über die in der übergeordneten Klasse definierten Attribute und Methoden.

5. Wenn einige Mitglieder von zwei oder mehr Klassen gleich sind, können durch den Vererbungsmechanismus vorhandene Klassen zum Erstellen neuer Klassen verwendet werden.

6. Unterklassen haben nicht nur Mitglieder der übergeordneten Klasse, sondern können auch neue Mitglieder definieren.

7. Es kann die Wiederverwendbarkeit und Skalierbarkeit von Software verbessern.

2. Elternklasse und Unterklasse

1. Elternklasse: Basisklasse oder Superklasse

2. Unterklasse : abgeleitete Klasse oder abgeleitete Klasse

3. Implementierung der Vererbung

Verwenden Sie das Schlüsselwort „extends“.

4. Zugriffskontrolle

Die Java-Sprache legt Zugriffskontrollregeln fest, um die Verwendung von Klassenmitgliedern aus externen Klassen einzuschränken

is

访问修饰符

自身访问

包内访问

包外子类访问

包外访问

public

protected

默认

private

Zugriffsmodifikator
Selbstzugriff Zugriff innerhalb des Pakets Zugriff auf Unterklassen außerhalb des Pakets Zugriff außerhalb des Pakets
public isis ist
geschützt Ja Ja Ja Nein
Standard Ja Ja Nein Nein
privat Ja Nein Nein Nein

Hinweis: Mit private geänderte Eigenschaften und Methoden in der übergeordneten Klasse sind für die Unterklasse transparent und können nicht vererbt werden.

5. Konstruktormethoden in der Vererbung

1. Die Konstruktormethode der übergeordneten Klasse kann nicht von der Unterklasse geerbt werden

2. Eine Unterklasse muss zuerst den Konstruktor der übergeordneten Klasse aufrufen, bevor sie ihren eigenen Konstruktor ausführt. Es gibt zwei Arten von Aufrufen:

a. Verwenden Sie den Superschlüssel im ersten Satz des Konstruktors der Unterklasse um anzugeben, welcher Konstruktor der übergeordneten Klasse aufgerufen wird

Zum Beispiel: super()//Rufen Sie den Konstruktor der übergeordneten Klasse ohne Parameter auf

super(parameter list)//Rufen Sie den Konstruktor der übergeordneten Klasse mit auf Parameter Konstruktormethode

b. Impliziter Aufruf: Wenn kein expliziter Aufruf erfolgt, wird der parameterlose Konstruktor der übergeordneten Klasse automatisch aufgerufen, was dem expliziten Aufruf von super() entspricht, d Der Konstruktor der übergeordneten Klasse wird aufgerufen. Sie können Super ()

weglassen. Besondere Aufmerksamkeit:

1. Die Aufrufreihenfolge der von der Unterklasse konstruierten Methode besteht darin, zuerst die Strukturmethode der übergeordneten Klasse aufzurufen Der Konstruktor der Unterklasse heißt

2. Wenn in der übergeordneten Klasse ein Standardkonstruktor vorhanden ist, kann der Konstruktor der Unterklasse den expliziten Aufruf des Konstruktors der übergeordneten Klasse weglassen

3 Es gibt nur einen Konstruktor mit Parametern, die Unterklasse. Das Schlüsselwort super muss im Konstruktor verwendet werden, um den Konstruktor der übergeordneten Klasse explizit aufzurufen

6. Klassenhierarchie

1.Java Die Sprache unterstützt keine Mehrfachvererbung, dh eine Klasse kann nur eine Klasse direkt erben.

2. Eine Klasse kann mehrere indirekte übergeordnete Klassen haben.

3. Alle Java-Klassen erben direkt oder indirekt die Klasse java.lang.Object

4. Die Object-Klasse ist der Vorfahre aller Java-Klassen und alle Java-Klassen sind im Object definiert Klassenobjekte haben alle das gleiche Verhalten

7. Standardvererbung

1. Beim Definieren einer Klasse wird das Schlüsselwort „extends“ also nicht verwendet Diese Klasse erbt direkt von der Object-Klasse

Kapitel 8: JavaPolymorphismus

1 . Das Konzept des Polymorphismus

Offizielle Definition: Polymorphismus bedeutet, dass der Aufruf von Mitgliedsmethoden einer Klasse unterschiedliche Implementierungen bildet

Persönliches Verständnis: Elternklasse Der Verweis verweist auf die Unterklasse Objekt

                                                                                                                                Verbessern Sie effektiv die Skalierbarkeit des Programms

               Der Polymorphismus wird in zwei Typen unterteilt: Basierend auf dem Schreiben

Dynamischer Polymorphismus wird auch als dynamische Bindung bezeichnet. Wenn wir von Polymorphismus sprechen, beziehen wir uns im Allgemeinen auf dynamischen Polymorphismus.

2. Methodenumschreibung

Wenn eine Methode in einer Unterklasse definiert ist und ihr Name, Rückgabewerttyp und Parameterliste genau mit einer Methode in der übergeordneten Klasse übereinstimmen, können wir sagen, dass die Methode der Unterklasse die Methode der übergeordneten Klasse überschreibt.

Besondere Aufmerksamkeit:

1. Das Überschreiben der Methode muss eine Vererbungsbeziehung als Voraussetzung haben.

2. Der Methodenname, der Rückgabewerttyp und die Parameterliste der Unterklasse müssen vorhanden sein das Gleiche wie Die Methoden der übergeordneten Klasse sind gleich

3. Die Methoden der Unterklasse können die Zugriffsrechte der Methode der übergeordneten Klasse nicht reduzieren

4. In derselben Klasse können Methoden nur überladen, nicht überschrieben werden

3. Polymorphe Anwendung

Wenn eine übergeordnete Klassenreferenz auf ein Unterklassenobjekt verweist und eine Methode aufgerufen wird Die Wiederverwendung der Referenz wird immer aufgerufen. Die Methode weist nach dem Schreiben

das Objekt der Unterklasse der Referenz der übergeordneten Klasse zu. Dieses Verhalten wird als „Upcasting“ bezeichnet, wodurch die Referenz der übergeordneten Klasse implizit konvertiert werden kann Klasse zurück zur untergeordneten Klasse. Zitat, dieses Verhalten wird als „Abwärtstransformation“ bezeichnet, die zwingend erforderlich sein muss, um

zu transformieren: Wenn die Zither der übergeordneten Klasse auf die verweist Unterklassenobjekt, der Aufruf der Methode ist eine dynamische Analyse. Das heißt, die dynamische Auswahl basierend auf dem tatsächlichen Typ des Objekts wird als dynamische Bindung bezeichnet

4. ObjectKlasse Die Object-Klasse ist die übergeordnete Klasse oder indirekte übergeordnete Klasse aller Java-Klassen Aufgrund der polymorphen Eigenschaften können wir die Referenz der Object-Klasse verwenden, um auf ein beliebiges Objekt zu verweisen

Hinweis: Wenn Sie den spezifischen Typ des von Object referenzierten Objekts bestimmen können, können Sie eine Abwärtstransformation (erzwungene Konvertierung) durchführen.

5. gleichMethode Der Zweck der Methode „equals“ besteht darin, zu erkennen, ob zwei Objekte gleich sind.

Wird von der Object-Klasse bereitgestellt. Die Implementierung der Methode „equals“ besteht darin, zu erkennen, ob sich die Speicheradressen zweier Objekte im selben Bereich befinden (ob (die Speicheradressen sind gleich)

Im Allgemeinen müssen wir die Methode „equals“ neu schreiben, um die Regeln für die Beurteilung, ob zwei Objekte gleich sind, neu zu definieren.

Persönliches Verständnis: Die Gleichheitsmethode besteht darin, die Spielregeln anzupassen und die Bedingungen für die Objektgleichheit entsprechend unseren Bedürfnissen zu formulieren

6. toString Methode Die toString-Methode gibt einen String zurück, der das Objekt beschreibt (dieser muss neu geschrieben werden, wenn das Objekt direkt verwendet wird). für Ausgabe) Methode)

Persönliches Verständnis: Vereinfachen Sie den Prozess der Ausgabe von Objektinformationen. Nach dem Umschreiben können Sie das Objekt direkt ausgeben

7. finalSchlüsselwort Das Schlüsselwort final kann zum Ändern von Klassen, Methoden und Variablen verwendet werden, final bedeutet unveränderlich

Hinweis: Mit final geänderte Konstanten müssen explizit initialisiert werden

Kapitel 9: Abstrakte Klassen und Schnittstellen

1 🎜>

Wenn wir das Vererbungsdiagramm der Klassen von unten nach oben betrachten, stellen wir fest, dass die Klassen allmählich allgemeiner und abstrakter werden.

Aufgrund der generischen Natur von Klassenvariablen können wir keine sinnvollen Implementierungsprozesse für Methoden in Klassen erstellen.

Manchmal benötigen wir eine übergeordnete Klasse, die nur eine allgemeine Form definiert, die von allen ihren Unterklassen gemeinsam genutzt werden kann, und die jede Unterklasse die Implementierungsdetails ergänzen lässt. Eine solche Klasse wird als abstrakte Klasse bezeichnet.

Hinweis: Klassen, die abstrakte Methoden enthalten, müssen abstrakte Klassen sein. Abstrakte Klassen können Attribute und nicht abstrakte Methoden enthalten.

2. Abstrakte Methode

Beim Definieren einer Java-Methode können Sie nur den Deklarationsteil der Methode definieren, ohne den Methodenkörper zu schreiben ( Das heißt, die Implementierungsdetails der Methode. Eine solche Methode wird als abstrakte Methode bezeichnet.

Hinweis: Abstrakte Methoden müssen mit dem Schlüsselwort „class“ geändert werden.

3. Besondere Aufmerksamkeit

èAbstrakte Klassen und abstrakte Methoden müssen mit dem Schlüsselwort abstract geändert werden

èAbstrakte Methoden Es gibt Kein Methodenkörper und kein geschweiftes Klammerpaar. Nach der Parameterliste muss ein Semikolon

stehen.  è Wenn die Klasse eine abstrakte Methode enthält, muss es sich bei der Klasse um eine abstrakte Klasse handeln Im Gegenteil, in der abstrakten Klasse sind nicht unbedingt abstrakte Methoden enthalten.

èAbstrakte Klassen können nicht instanziiert werden (d. h. Objekte abstrakter Klassen können nicht erstellt werden)

èSie können statische Methoden in abstrakten Klassen deklarieren

4 . Verwendung abstrakter Klassen

Da abstrakte Klassen keine Objekte erstellen können, können wir abstrakte Klassen nur durch Vererbung verwenden. (Unterstützt Polymorphismus)

Hinweis:

1. Wenn die Unterklasse eine abstrakte Klasse erbt, muss die Unterklasse alle abstrakten Methoden in der übergeordneten Klasse überschreiben

2. Wenn eine abstrakte Klasse erbt eine andere abstrakte Klasse, die Unterklasse muss die abstrakte Methode in der übergeordneten Klasse nicht überschreiben

5. Zusammenfassung der abstrakten Klassen

Abstrakte Klassen werden hauptsächlich von Unterklassen geerbt, und dann spielen ihre Unterklassen ihre Rolle. Die Rolle abstrakter Klassen spiegelt sich hauptsächlich in den folgenden zwei Aspekten wider:

1. Code-Wiederverwendung (Oberflächenphänomen))

2. Planen Sie das Verhalten seiner Unterklassen (Schlüsselverständnis)

Fassen Sie abstrakte Klassen in einem Satz zusammen: Abstrakte Klassen sind Abstraktionen von Klassen

6. Schnittstellenkonzept

Mehrfachvererbung wird in Java nicht unterstützt, es wird jedoch eine leistungsstarke Schnittstellenunterstützung bereitgestellt.

Schnittstelle: Nicht verwandt, aber mit demselben Verhalten. Die Methoden in der Klasse sind angegeben, und das gibt es Die Vererbungsbeziehung zwischen Klassen muss nicht berücksichtigt werden

Eine Klasse kann nur eine übergeordnete Klasse direkt erben, aber mehrere Schnittstellen implementieren

Eine Schnittstelle ist eine Sammlung abstrakter Methoden und statischer Konstanten. Im Wesentlichen ist eine Schnittstelle eine spezielle abstrakte Klasse, die nur die Definition abstrakter Methoden und statischer Konstanten enthalten kann.

7. Achten Sie besonders auf

Da die in der Schnittstelle definierten Methoden abstrakte Methoden sein müssen, können Sie dies beim Definieren abstrakter Methoden in der Schnittstelle tun Die Schlüsselwörter public und abstract werden weggelassen

Da die in der Schnittstelle definierten Variablen statische Konstanten sein müssen, können Sie die Schlüsselwörter public, static und final weglassen, wenn Sie statische Konstanten in der Schnittstelle definieren

8. Verwendung von Schnittstellen

Ähnlich wie bei der Vererbung können Java-Klassen Schnittstellen implementieren, und Implementierungsklassen müssen alle abstrakten Methoden in der Schnittstelle überschreiben

Eine Implementierung Eine Klasse kann mehrere durch Kommas getrennte Schnittstellen implementieren.

Schnittstellen unterstützen auch Polymorphismus für die Programmierung: Schnittstellenreferenzen verweisen auf Implementierungsklassenobjekte

Schnittstellen können Vererbungsbeziehungen haben und unterstützen Mehrfachvererbung

9. Schnittstellenzusammenfassung

In einem Satz Zusammenfassung von Schnittstellen: Schnittstellen sind Abstraktionen von Verhaltensweisen (d. h. Methoden)

10. Vergleich von Schnittstellen und abstrakten Klassen

1. Ähnlichkeiten:

a. Schnittstelle ist eine spezielle abstrakte Klasse

b. Keine der beiden Klassen kann abstrakte Methoden enthalten

2. Unterschiede:

a. aber Schnittstellen können nicht

b. Wenn Sie einer abstrakten Klasse eine nicht abstrakte Methode hinzufügen, schadet dies der Unterklasse Impact nicht, aber bei Schnittstellen sollten sie sich nach der Erstellung nicht ändern

c. Eine Klasse kann nur eine abstrakte Klasse erben, aber eine Klasse kann mehrere Schnittstellen implementieren

11. Vordefinierte Schnittstelle Vergleichbar Es gibt eine Arrays-Klasse im java.util-Paket. Die Sortiermethode dieser Klasse kann ein Objektarray sortieren, es gibt jedoch eine Voraussetzung, dass die Objekte im Array das implementieren müssen Vergleichbare Schnittstelle

Kapitel 1: Ausnahmebehandlung

1. Das Konzept der Ausnahme Ausnahme bezieht sich auf ein Ereignis, das während der Ausführung eines Programms auftritt und die normale Ausführung von Programmanweisungen unterbrechen kann

In der Java-Sprache können Ausnahmen in zwei Kategorien unterteilt werden:

Fehler: bezieht sich auf Interne Fehler im JVM-System, Ressourcenerschöpfung und andere schwerwiegende Situationen

Ausnahme: aufgrund von Programmierfehlern oder versehentlichen allgemeinen Problemen, die durch externe Faktoren verursacht werden, z. B. Quadratwurzel negativer Zahlen, Nullzeigerzugriff, Versuch, Non zu lesen -vorhandene Dateien und Probleme mit der Unterbrechung der Netzwerkverbindung

Die Java-Sprache bietet einen vollständigen Satz abnormaler Verarbeitungsmechanismen.

2 🎜>

Wenn während der Ausführung eines Java-Programms eine Ausnahme auftritt, erkennt und generiert das System automatisch ein entsprechendes Ausnahmeklassenobjekt und gibt es dann an das Laufzeitsystem weiter Das Laufzeitsystem sucht dann danach Wenn das Laufzeitsystem keinen Code findet, der die Ausnahme behandeln kann, wird das Laufzeitsystem entsprechend beendet. Programmierer haben keine Möglichkeit, Fehler zu behandeln . Im Allgemeinen können sie nur Ausnahmen behandeln

3. Ausnahmebehandlungseigenschaften

Ausnahmen klassifizieren und Java-Klassen verwenden stellen Ausnahmen dar, die skalierbar und wiederverwendbar sind Trennen Sie den Code des abnormalen Prozesses vom Code des normalen Prozesses. Verbessert die Lesbarkeit des Programms Sie können Ausnahmen abfangen und sofort behandeln. oder Sie können sie zur Verarbeitung auf die obere Ebene werfen, was flexibel ist

4.

AusnahmeKlasse Ausnahme ist in zwei Zweige unterteilt 1. Laufzeitausnahmen: z. B. Typkonvertierungsausnahmen, Array-Index-Ausnahmen außerhalb der Grenzen, Null Zeigerausnahmen usw. 2. Ausnahmen zur Kompilierungszeit: Ausnahmen bei der Ausführung von SQL-Anweisungen, Ausnahmen beim Lesen nicht vorhandener Dateien usw.

Gemeinsame Ausnahmetypen

   

Ausnahmeklasse

Beschreibung

异常类

说明

ArithmeticException

算术异常

ArrayIndexOutOfBoundsException

数组索引越界异常

NullPointerException

空指针异常

ClassNotFoundException

类找不到异常

IOException

输入输出异常

FileNotFoundException

文件找不到异常

SQLException

SQL语句执行异常

ArithmeticException Arithmetische Ausnahme
ArrayIndexOutOfBoundsException Array-Index außerhalb der Grenzen – Ausnahme
NullPointerException NullPointerException
ClassNotFoundException Ausnahme „Klasse nicht gefunden“
IOException td> Eingabe- und Ausgabeausnahme
FileNotFoundException Ausnahme „Datei nicht gefunden“
SQLException SQL-Anweisungsausführungsausnahme

6. Der Zweck der Ausnahmebehandlung

è Rückkehr in einen sicheren und bekannten Zustand

è Fähigkeit um dem Benutzer die Ausführung anderer Befehle zu ermöglichen

è Wenn möglich, alle Arbeit speichern

è Bei Bedarf beenden, um weiteren Schaden zu vermeiden

è Ausnahmen können nur im verwendet werden In einer normalen Situation kann der normale Prozess der Programmsteuerung nicht durch Anomalien gesteuert werden.

Um zu große TRY-Blockcodes zu vermeiden, ist es umso schwieriger, die Anomalien zu analysieren Ursache, desto schwieriger ist es, die abnormalen Gründe zu analysieren

7. Verwenden Sie die Ausnahmebehandlung

Java bietet den Try-Catch-finally Anweisung zur Unterstützung der Ausnahmebehandlung

try-Block: Code, der Ausnahmen generieren kann

Catch-Block: Code behandeln, wenn eine Ausnahme auftritt

Final-Block: Bedingungslose Ausführung von Code (normalerweise verwendet). um Ressourcen freizugeben)

Hinweis: Wenn das Programm eine Ausnahme generiert und in den Catch-Anweisungsblock eintritt, kann der Programmierer normalerweise die Methode printStackTrace verwenden, um die Ausnahmeinformationen an die Konsole auszugeben

8. Throw-Anweisung-Ausnahme

Das Deklarieren, dass eine Ausnahme ausgelöst wird, ist die zweite Möglichkeit der Java-Ausnahmebehandlung, wenn der Code in einer Methode möglicherweise eine Ausnahme generiert Eine Art Ausnahme während der Laufzeit ist in dieser Methode nicht erforderlich. Wenn Sie nicht sicher sind, wie mit solchen Ausnahmen umgegangen werden soll, können Sie das Schlüsselwort throws verwenden, um eine Ausnahme zu deklarieren. Zu diesem Zeitpunkt werden solche Ausnahmen in der Methode nicht behandelt , wird aber vom Aufrufer der Methode verarbeitet

Kapitel 3: Sammlungsrahmen

1. Übersicht über Sammlungen

Beim Erstellen eines Java-Arrays müssen Sie die Länge des Arrays angeben. Sobald das Array erstellt wurde, kann seine Länge nicht mehr geändert werden

In vielen praktischen Situationen beträgt die Länge des Arrays nicht behoben, daher stellt die Java-Sprache einen erweiterten Container, das Sammlungsframework, zur Verfügung, um damit verbundene Probleme zu lösen

Alle Java-Sammlungen befinden sich im java.util-Paket

2. Sammlungskonzept

Eine Sammlung ist eine Kombination mehrerer Nutzungen, ein Ganzes bestehend aus „Daten“ mit ähnlichen oder identischen Eigenschaften

Systematisch gesehen sind die Grundsammlungen in Java kann in die folgenden drei Typen unterteilt werden:

Liste (Liste):

Listensammlung unterscheidet die Reihenfolge von Elementen und ermöglicht doppelte Elemente

Satz:

Set set unterscheidet nicht die Reihenfolge der Elemente und lässt keine doppelten Elemente zu

Mapping (Map):

Die Map-Sammlung speichert Paare von „Schlüssel-Wert“-Informationen darf wiederholt werden. Jeder Schlüssel kann höchstens einen Wert abbilden

3. Elemente in der Sammlung

         Java-Sammlungen können nur Referenzdatentypdaten (d. h. Objekte) speichern. Tatsächlich speichert die Sammlung Referenzen auf Objekte, nicht die Objekte selbst. Die Elemente in der Sammlung entsprechen Referenztypvariablen

4. SammlungSchnittstelle

Die java.util.Collection-Schnittstelle ist die übergeordnete Schnittstelle, die die Sammlungstypen Set und List beschreibt und universelle Methoden für Sammlungsoperationen definiert

Allgemeine Methoden:

boolean add(Object o)

Iterator iterator()

Object[] toArray()

5 >

Liste

Schnittstelle

Listenschnittstelle ist eine Unterschnittstelle der Sammlungsschnittstelle Listenschnittstellenvorschriften Benutzer kann die Einfügeposition von Listenelementen präzise steuern und verfügt über zusätzliche Funktionen wie den Zugriff auf Elemente basierend auf dem Index. Eine neue entsprechende Methode wurde zur Schnittstelle void add(int index,Object element) hinzugefügt Objekt get(int index)Objektsatz(int index,Objektelement)int indexOf(Object o)

Objekt entfernen(int index)

6.

ArrayList

                                                                                                                                      Die Array-Liste mit variabler Länge

ArrayList Ermöglicht, dass der Wert NULL ist, und die Standardkapazität beträgt 10. Zusätzlich zur Implementierung aller durch die Listenschnittstelle definierten Funktionen werden auch einige Methoden bereitgestellt, um die Größe der ArrayList-Kapazität

public ArrayList zu steuern () public ArrayList(int Capacity) 7. Iterator

java.util Die .Iterator-Schnittstelle beschreibt a Werkzeug zum einheitlichen Durchlaufen verschiedener Sammlungselemente, genannt Iterator

boolean hasNext()

Object next()

Generika

Der generische (Gernerics) Mechanismus wurde seit JavaSE 5.0 eingeführt. Er parametrisiert tatsächlich die ursprünglich ermittelten und unveränderten Typen

Vorteile von Generics:

1. Als Erweiterung des ursprünglichen Java-Typsystems kann die Verwendung von Generika die Typsicherheit, Wartbarkeit und Zuverlässigkeit von Java-Anwendungen verbessern

2. Kann das Problem der Datenmodellierung in Sammlungen lösen

Verwendung:

Legen Sie beim Erstellen eines Sammlungscontainers die Elementtypen fest, die gespeichert werden dürfen. Anschließend ist der Compiler dafür verantwortlich, die Typgültigkeitsprüfung der Elemente hinzuzufügen um die Styling-Verarbeitung beim Zugriff auf die Sammlungselemente durchzuführen

Zusammenfassung: Datentypparametrisierung

HashSetKlasse Die Klasse java.util.HashSet implementiert die java.util.Set-Schnittstelle und beschreibt die typische Set-Sammlungsstruktur Doppelte Elemente sind in HashSet nicht zulässig. Stellen Sie sicher, dass die Reihenfolge der Elemente im Satz

HashSet darf Nullwertelemente enthalten, es darf jedoch nur ein Nullelement enthalten

10,

TreeSet Klasse Die Klasse java.util.TreeSet implementiert auch die java.util.Set-Schnittstelle, die das Set beschreibt. Eine Variante der Sammlung, die Sortierfunktionen implementieren kann Wenn ein Objektelement zur TreeSet-Sammlung hinzugefügt wird, wird es automatisch entsprechend in die geordnete Objektsequenz eingefügt an bestimmte Vergleichsregeln, um sicherzustellen, dass die Reihenfolge der aus Sammlungselementen zusammengesetzten TreeSet-Objekte immer in „aufsteigender Reihenfolge“ angeordnet ist

Die TreeSet-Klasse unterstützt zwei Sortiermethoden: natürliche Sortierung (Standard) und benutzerdefinierte Sortierung

Bei Verwendung der natürlichen Sortierung müssen die Elemente in der Sammlung implementiert werden. Die Schnittstelle „Comparable“ ruft die Methode „compareTo“ des Objekts auf, um die Elemente zu sortieren.

Es gibt einige Klassen in der JDK-Klassenbibliothek, die das implementieren Vergleichbare Schnittstelle, wie zum Beispiel: Integer, Double, String usw.

Elf,

Liste Set und SetDurchlauf von Sammlungen Listentyp-Sammlungen: Sie kann gewöhnliche For-Schleifen, Super-For-Schleifen und Iteratoren zum Durchlaufen verwenden Set-Typ-Sammlungen: Sie können Super-For-Schleifen und Iteratoren zum Durchlaufen verwenden

Hinweis: Seit dem Set Die Typsammlung hat keinen Index, Sie können zum Durchlaufen keine gewöhnlichen For-Schleifen verwenden

Map

(Karte) Karte ist eine Art Schlüssel. Eine Sammlung von Objekten für die Zuordnung, von denen jedes Element zwei Objekte enthält (Schlüsselobjekt und Wertobjekt) Typische Map-Typ-Sammlungen umfassen HashMap und TreeMap Elementmethode hinzufügen: put( Object key,Object value) Holen Sie sich das Wertobjekt über das Schlüsselobjekt: get(Object key)

Dreizehn, TreeMapKategorie

Die Die TreeMap-Klasse implementiert die SortedMap-Schnittstelle, sodass die TreeMap nach Schlüsselobjekten sortiert werden kann. Voraussetzung ist jedoch, dass die gespeicherten Schlüsselobjekte die Comparable-Schnittstelle implementieren müssen

14, KarteSammlungsdurchquerung

Da Schlüsselobjekte nicht wiederholt werden können, können es alle be Das Schlüsselobjekt wird als Set-Typ-Sammlung betrachtet

Diese Set-Typ-Sammlung

wird über die keySet()-Methode der Map-Sammlung abgerufen und durchläuft die Set-Sammlung, die aus allen Schlüsselobjekten besteht

Während des Durchlaufprozesses kann jedes Mal, wenn ein Schlüsselobjekt abgerufen wird, ein Wertobjekt abgerufen werden

Kapitel 4: IO

1. Übersicht

Die meisten Programmierarbeiten umfassen die Datenübertragungssteuerung (Eingabe/Ausgabe)

Java IO des IO wird durch den Datenfluss implementiert und der Datenfluss zwischen der Quelle

IO-Klassenbibliothek befindet sich im abstrahierten Java.io-Paket

2. Klassifizierung von Streams

Entsprechend den verschiedenen E/A-Verarbeitungsdaten wird es unterteilt in: Byte-Stream und Zeichen-Stream

Entsprechend Für verschiedene Funktionen ist es unterteilt in: Datenfluss und Betriebsfluss

Nach verschiedenen Implementierungsmethoden ist es unterteilt in: Bottom-Flow und High-Level-Flow

3 . Bytes Stream

Bytes als minimale Übertragungseinheit verwenden

Bestehend aus entsprechendem Datenstrom und Operationsstrom

Abstrakte übergeordnete Klasse des Byte-Eingabestroms: InputStream

Abstrakte übergeordnete Klasse des Byte-Ausgabestreams: OutputStream

Datenstrom (zugrundeliegender Stream): Verantwortlich für den Aufbau eines Byte-Datenübertragungskanals und verantwortlich für die Übertragung von Byte-Daten. Es werden nur grundlegende Byte-Datenzugriffsmethoden bereitgestellt. InputStream und OutputStream sind die übergeordneten Klassen aller Byte-Stream-Klassen und können nicht instanziiert werden, um das Verhalten von Unterklassen zu standardisieren, z. B.: Der E/A-Stream muss nach dem Ende geschlossen werden 🎜> InputStream /OutputStream

FileInputStream/FileOutputStream

Operationsstream (High-Level-Stream): Keine Daten von IO-Geräten lesen oder schreiben, nur Daten von anderen Streams lesen oder schreiben, sofern normal Streams bieten keine Methoden zur Vereinfachung der Programmierung oder zur Verbesserung der E/A-Effizienz. Der Operationsstream nutzt das Entwurfsmuster „Decorator“, erbt die InputStream-Klasse selbst und fügt eine große Anzahl von Methoden zum „Dekorieren“ anderer Datenflussklassen hinzu, wodurch die Erstellung einer großen Anzahl neuer Funktionsklassen vermieden wird.

BufferedInputStream/BufferedOutputStream

4. Zeichenstrom Abstrakte übergeordnete Klasse des Zeicheneingabestroms: Reader

Abstrakte Elternklasse des Zeichenausgabestroms: Writer

Datenstrom (zugrundeliegender Strom):

Reader/Writer

FileReader/FileWriter

Betriebsablauf (High-Level-Flow):

BufferedReader/BufferedWriter

fünf, Byte-Zeichen-Bridge-Stream

InputStreamReader: Verwenden Sie das Adapterentwurfsmuster, um den InputStream-Typ in den Reader-Typ zu konvertieren

OutputStreamWriter: Verwenden Sie das Adapterentwurfsmuster zum Konvertieren vom Typ OutputStream zum Typ Writer

6. Grundkonzepte der Klasse File 🎜>

Dateiklasse: stellt eine abstrakte Darstellung von Datei- und Verzeichnispfadnamen dar.

Die Dateiklasse kann Dateien erstellen, löschen, umbenennen, Pfade abrufen, Zeit erstellen usw. Sie ist die einzige Operationsklasse, die sich auf die Datei selbst bezieht.

Kapitel 6: Threads

Ein Thread ist ein sequentieller Kontrollfluss innerhalb eines Programms

1. Threads und Prozesse

1. Jeder Prozess verfügt über unabhängigen Code und Datenraum, und Prozesswechsel sind teuer

2. Threads sind leichtgewichtig Threads des gleichen Typs teilen sich den Code und den Datenraum. Der Thread-Umschaltaufwand ist gering. 3. Multiprozess: Im Betriebssystem kann er ausgeführt werden gleichzeitig mehrere Aufgaben (Programme) ausführen

4. Multithreading: Mehrere Sequenzflüsse werden gleichzeitig in derselben Anwendung ausgeführt

2. Threads erstellen

Java-Threads werden über die Klasse java.lang.Thread implementiert. Jeder Thread schließt seine Operation über die Run-Methode ab, die einem bestimmten Thread-Objekt entspricht.

Es gibt zwei Möglichkeiten, einen Thread in der Java-Sprache zu erstellen:

A. Implementieren Sie die Runnable-Schnittstelle

1. Erstellen Sie eine Klasse und implementieren Sie die Runnable-Schnittstelle

2. Schreiben Sie die Ausführungsmethode in der Runnable-Schnittstelle neu

3. Erstellen Sie ein Objekt der Implementierungsklasse

4. Erstellen Sie ein Thread-Objekt und übergeben Sie das Implementierungsklassenobjekt an 5. Rufen Sie The auf Die Startmethode startet den Thread

B. Erben Sie die Thread-Klasse

1. Definieren Sie eine Klasse, um die Thread-Klasse direkt zu erben, um einen Thread zu erstellen

2. Überschreiben Sie die Ausführungsmethode in der Thread-Klasse

3. Erstellen Sie ein Thread-Objekt

4. Rufen Sie die Startmethode auf, um den Thread zu starten

3. Vergleich zweier Arten der Thread-Erstellung

è Verwenden Sie die Runnable-Schnittstelle, um einen Thread zu erstellen

Sie können die CPU trennen , Code und Daten. Bilden Sie ein klares Modell

Die Implementierungsklasse kann auch einige nützliche Eigenschaften und Methoden von anderen Klassen erben

Es ist hilfreich, die Konsistenz des Programmstils aufrechtzuerhalten

è Den Thread zur Erstellung der Thread-Klasse direkt erben

                                                                                                               existiert nicht? 🎜>

4. Andere Konzepte

1 . Hintergrundverarbeitung (Hintergrundverarbeitung): Geben Sie anderen Programmen Platz, solange die CPU frei ist, wenn keine Aufgaben mit höherer Priorität und dringenderen Aufgaben ausgeführt werden können, z. B. Drucken von Dokumentvorgängen usw .

2. Hintergrund-Thread/Daemon-Thread: Läuft im Hintergrund, normalerweise einige sekundäre Threads, die Dienste für andere Threads bereitstellen, wie zum Beispiel: Garbage-Collection-Thread in JVM 3. Benutzer-Thread ( Benutzer-Thread): Thread, der vom Benutzer oder vom System für den Benutzer erstellt wurde

4. Haupt-Thread (Haupt-Thread): Der Haupt-Thread für die Ausführung der Anwendung, bei dem es sich um eine Art Benutzer-Thread

5. Unterthread (Unterthread): Erstellt in einem laufenden Thread Neuer Thread

                                                                                                                                            Public Final Boolean Isdaemon () // Beurteilen, ob ein Thread der Hintergrundthread ist

Public Final Boolean SetDaemon (Boolesches Flag) // Einen Thread als Hintergrundthread festlegen

Hinweis: Seien Sie eine Anwendung als Anwendung, wenn alle Benutzerthreads nicht mehr ausgeführt werden, unabhängig davon, ob sie normal beendet werden oder vorzeitig mit einem Fehler beendet werden Beenden. Es ist verständlich, dass Hintergrundthreads nicht ernst genommen werden und Benutzerthreads bedienen

6. Thread-Lebenszyklus

Neuer Status: Neu erstelltes Thread-Objekt Bereitschaftszustand: Geht nach Aufruf der Startmethode in den Bereitschaftszustand

Laufender Zustand: gesteuert durch den Thread-Scheduler der JVM

Blockierungszustand: Wenn ein Ereignis auftritt, das verursacht Tritt ein Thread zum Anhalten auf, passt ihn der Thread-Scheduler der JVM an den Blockierungsstatus an, z. B. in einem Thread. Führen Sie E/A-Vorgänge aus oder warten Sie auf Ereignisse wie Dateneingaben über die Tastatur

Beendigungsstatus: Wenn alle Programme in Wenn die Ausführungsmethode ausgeführt wird, wechselt der Thread in den Beendigungszustand

Besonderer Hinweis: Es ist verboten, einen beendeten Thread erneut zu starten, und ein Thread darf nicht mehrmals gestartet werden 7. Thread-Priorität

Die Priorität eines Java-Threads wird durch eine Zahl im Bereich von 1 bis 10 dargestellt.

Die Standardpriorität des Hauptthreads ist 5, und die Priorität des untergeordneten Threads ist dieselbe wie die Priorität von standardmäßig sein übergeordneter Thread

Relevante Methoden, die von der Thread-Klasse bereitgestellt werden

public final int getPriority()//Die Priorität des Threads abrufen

public final void setPriority(int newPriority)//Legen Sie die Priorität des Threads fest

Relevante statische Ganzzahlkonstante:

Thread.MIN_PRIORITY=1

5

                                                                                                                                                             nicht abhängig von der Thread-Priorität Um die Reihenfolge der Thread-Ausführung zu steuern? Führen Sie den aktuell ausgeführten Thread aus, um in den Blockierungszustand zu gelangen, und aktivieren Sie ihn dann, um ihn nach der angegebenen „Verzögerungszeit“ in den Bereitschaftszustand zu versetzen.

Verwandte Methoden, die von der Thread-Klasse bereitgestellt werden:

öffentlicher statischer Leerschlaf (lange Millisekunden)öffentlicher statischer Leerschlaf (lange Millisekunden,int Nanos)Hinweis: 1 Sekunde = 1000 Millisekunden, 1 Millisekunde = 1 Million Nanosekunden

9. Thread-Konzession

Lassen Sie den laufenden Thread aktiv die CPU-Verarbeitungsmöglichkeit aufgeben, die er derzeit erhält, aber anstatt den Thread zu blockieren , es wird umgeleitet.

Verwandte Methoden, die von der Thread-Klasse bereitgestellt werden:

public static void yield()10. Thread-Unterbrechung und -Wiederherstellung

Anhalten: Den aktuell laufenden Thread anhalten, in einen blockierten Zustand versetzen und die Ausführung nicht automatisch fortsetzen

Fortsetzen: Einen angehaltenen Thread fortsetzen

Relevante Methoden, die von der Thread-Klasse bereitgestellt werden: public final void suspend()//Thread-Suspension public final void resume()//Thread-Resume

11. Thread-Synchronisation und Deadlock

1. Multithread-Datenfreigabe: Bei Multithread-Vorgängen können mehrere Threads gleichzeitig dieselben Daten verarbeiten . Bei einer Ressource handelt es sich um von mehreren Threads gemeinsam genutzte Daten.

2. Thread-Synchronisierung: Um das Problem der Datenfreigabe zu lösen, muss eine Synchronisierung verwendet werden. Die sogenannte Synchronisierung bedeutet, dass nur ein Thread von mehreren Threads den angegebenen Code im gleichen Zeitraum ausführen kann Threads müssen warten, bis dieser Thread abgeschlossen ist, bevor Sie mit der Ausführung fortfahren können.

Es gibt zwei Möglichkeiten, Threads zu synchronisieren: (1) Synchronisationscodeblock synchronisiert (zu synchronisierendes Objekt) {

                     // Operationen an synchronisiert werden

}

(2) Synchronisationsmethode

                  öffentliche synchronisierte Void-Methode(){

                                                                                                                        Verschieben Sie Vorverarbeitung und Nachverarbeitung, die sich mit Threads nicht ändern, aus synchronisierten Blöcken.

                                                      (2) Nicht blockieren. Wie Benutzereingaben und andere Vorgänge.

(3) Rufen Sie keine Synchronisierungsmethoden für andere Objekte auf, während Sie die Sperre aufrechterhalten.

4. Thread-Deadlock: Zu viel Synchronisierung kann zu Deadlock-Vorgängen führen, die im Allgemeinen nur auftreten, wenn das Programm ausgeführt wird.

Hinweis: Um Ressourcen in Multithreads zu teilen, ist eine Synchronisierung erforderlich, aber zu viel Synchronisierung kann zu einem Deadlock führen.

Kapitel 7:

Socket

Netzwerkprogrammierung

1. Was ist ein Computernetzwerk, damit mehrere Computer problemlos Informationen untereinander übertragen und Ressourcen wie Hardware, Software und Daten teilen können

2. Socket

Programmierung Zwei Prozesse können Daten über eine bidirektionale Netzwerkkommunikationsverbindung austauschen . Der Endpunkt dieser Kommunikationsverbindung heißt „Socket“ (Socket) Socket wird normalerweise zum Implementieren der Client-Server-Verbindung verwendet Im java.net-Paket gibt es zwei Klassen, Socket und ServerSocket sind definiert, die zur Implementierung von bidirektional verbundenen Clients und Servern verwendet werden3 🎜>Grundlegende Schritte der Programmierung

1. Stellen Sie eine Netzwerkverbindung her

2. Öffnen Sie den mit dem Socket verbundenen Eingabe-/Ausgabestream

3. Daten über den geöffneten IO-Stream lesen/Schreibvorgang 4. Den geöffneten IO-Stream und das Socket-Objekt schließen Ergänzender Inhalt 1: Grafische Benutzeroberfläche Grafische Benutzeroberfläche (GUI) bietet eine benutzerfreundlichere und bequemere Bedienmethode für die visuelle Interaktion zwischen Benutzern und Programmen. Daher muss das Entwerfen einer grafischen Benutzeroberflächenanwendung über charakteristische Elemente wie Menüs, Symbolleisten, Steuerelemente usw. verfügen. usw. Java bietet eine schnelle Anwendungsentwicklungsmethode basierend auf GUI-Komponenten zum Entwerfen grafischer Benutzeroberflächenanwendungen und stellt eine große Anzahl verfügbarer Komponenten zur Unterstützung der ereignisgesteuerten Entwicklung bereit.

1.

Swing

und

AWT

AWT: Frühes Java enthielt eine Klassenbibliothek des Abstract Window Toolkit (AWT) für die grundlegende GUI-Programmierung, wie Button, Checkbox, List usw. Diese Klassen sind alle Unterklassen der Komponentenklasse

AWT-Komponenten sind gelten als schwergewichtige Komponenten, da sie zur Unterstützung des Zeichnens und Anzeigens auf das lokale System angewiesen sind. Jede AWT-Komponente verfügt über eine zugehörige Komponente im lokalen Fenstersystem.

Swing-Komponente Sie ist in reinem Java-Code geschrieben und wird als leichtgewichtige Komponente bezeichnet. Es ist nicht auf lokale Komponenten angewiesen, um seine Anzeige zu unterstützen, sondern wird vollständig von Java-Code gezeichnet und angezeigt, sodass es viel effizienter ist als die übliche AWT-Komponente.

Swing: Die Swing-Bibliothek ist neuer Um doppelte Namen zu vermeiden, beginnen alle Swing-Komponentenklassen mit dem Großbuchstaben J. Die überwiegende Mehrheit der Swing-Komponenten sind Unterklassen der JComponent-Klasse

2. Formularcontainer

JFrame (Form): Anwendungsprogramm der obersten Ebene Fenster

JDialog (Dialog): Modale und modale Dialogfelder, die Benutzereingaben sammeln

JPanel (Panel): Ein kleiner Container, der einen Teil der Schnittstelle aufnimmt

Ergänzender Inhalt zwei: JDBC

1. Übersicht

Die meisten Entwicklungssprachen bieten Datenbankzugriff

JDBC ist eine Reihe von Schnittstellen und Klassen, die von Sun bereitgestellt werden, die im Paket java.sql gekapselt sind und für den Zugriff auf die Datenbank verwendet werden.

Treiber und Klassen von Drittanbietern, die von Datenbankanbietern bereitgestellt werden , kann auf bestimmte Datenbanken zugreifen

2. JDBC

JDBC (Java Database Connectivity) Java-Datenbankverbindung, unterstützt Java-Anwendungen bei der Verbindung mit der Datenbank

Grundfunktionen:

1. Unterstützt grundlegende SQL-Anweisungen, implementiert Datenbankbetriebsfunktionen in Java-Programmen und vereinfacht den Betriebsprozess

1. Seien Sie darauf vorbereitet, eine bestimmte Datenbank zu betreiben

Einführen Sie die erforderlichen Pakete und Klassen Laden Sie die JDBC -Treiber

Identifikationsdaten Quelle

2. Stellen Sie einen Verbindungskanal mit der Datenbank her

Weisen Sie ein Verbindungsobjekt zu

3. Starten Sie den Einspruch und erklären Sie, was Sie tun möchten

Schreiben von SQL-Anweisungen

Zuweisen eines Statement-Objekts

Verwenden Sie das Statement-Objekt, um SQL-Anweisungen auszuführen

4. Erhalten Sie die gewünschten Ergebnisse und verarbeiten Sie die Ergebnisse

Fragen Sie die Daten aus dem zurückgegebenen ResultSet-Objekt ab

5. Nachdem die Verarbeitung abgeschlossen ist, führen Sie die Abschlussarbeiten durch

                                                                                                                                                                                                            weit über das Fenster hinaus. Die Treiberverwaltung bietet Verwaltungsfunktionen für verschiedene Datenbanktreiber

java.sql.Driver-Schnittstelle Datenbanktreiber, Softwaretreiber java.sql . Verbindungsschnittstelle

Verbindungsobjekt, das mit einer bestimmten Datenbank verbunden ist

java.sql.Statement-Schnittstelle

Objekt, das die Datenbank betreibt

java.sql.ResultSet Schnittstelle

Eine Sammlung mehrerer Zeilen und Spalten

5. Treiber

Treiber: Um den Betrieb des Computers zu ermöglichen System zum Betreiben eines bestimmten Schnittstellenprogramms, das von einer Art Hardware oder Software bereitgestellt wird.

Datenbanktreiber: Eine Sammlung von Codes, die eine Anwendung zum Betreiben einer bestimmten Datenbank benötigt. Sie kann als Softwaremodul verstanden werden, das gegenseitig einführt Verständnis zwischen der Anwendung und der Datenbank

Aufzählung: Die Aufzählung soll zulassen, dass der Wert eines bestimmten Variablentyps nur einer von mehreren festen Werten ist, andernfalls meldet der Compiler einen Fehler. Durch die Aufzählung kann der Compiler die vom Quellprogramm zugewiesenen illegalen Werte steuern. Dieses Ziel kann während der Entwicklungsphase nicht durch die Verwendung gewöhnlicher Variablen erreicht werden. Nach JDK1.5 wird das Schlüsselwort enum verwendet, um einen neuen Typ zu definieren, der als Aufzählungstyp bezeichnet wird.

Die mit dem Schlüsselwort enum definierte Aufzählungsklasse entspricht tatsächlich der Definition einer Klasse, die lediglich die Enum-Klasse erbt.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Java-Vererbung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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