Maison  >  Article  >  Java  >  Introduction détaillée à l'héritage Java

Introduction détaillée à l'héritage Java

零下一度
零下一度original
2017-07-26 16:59:392938parcourir

1. Le concept d'héritage

1. Le mécanisme par lequel une classe parent dérive une sous-classe est appelé héritage.

2. L'héritage est un moyen puissant de réutiliser le code du programme Lorsque les mêmes propriétés et méthodes existent entre plusieurs classes, les classes parentes peuvent être extraites de ces classes.

3. Il suffit de définir ces propriétés et méthodes dans la classe parent, et la sous-classe n'a pas besoin de redéfinir ces propriétés et méthodes, et peut directement hériter de la classe parent.

4. Grâce à l'héritage, la sous-classe aura automatiquement les attributs et méthodes définis dans la classe parent.

5. Si certains membres de deux classes ou plus sont identiques, grâce au mécanisme d'héritage, les classes existantes peuvent être utilisées pour créer de nouvelles classes.

6. Les sous-classes ont non seulement des membres de la classe parent, mais peuvent également définir de nouveaux membres.

7. Cela peut améliorer la réutilisabilité et l'évolutivité des logiciels.

2. Classe et sous-classe parent

1. Classe parent : classe de base ou super classe

2. Classe enfant : classe dérivée ou classe dérivée

3. Implémentation de l'héritage

Utilisez le mot-clé extends.

4. Contrôle d'accès

Le langage Java définit des règles de contrôle d'accès pour restreindre l'utilisation des membres de classe issus de classes externes

est

访问修饰符

自身访问

包内访问

包外子类访问

包外访问

public

protected

默认

private

Modificateur d'accès
Auto-accès Accès dans le package Accès aux sous-classes hors package Accès hors forfait
public estest est
protégé Oui Oui Oui Non
Par défaut Oui Oui Non Non
privé Oui Non Non Non

Remarque : les propriétés et méthodes modifiées avec private dans la classe parent sont transparentes pour la sous-classe et ne peuvent pas être héritées.

5. Méthodes constructeur en héritage

1. La méthode constructeur de la classe parent ne peut pas être héritée par la sous-classe

2. Une sous-classe doit d'abord appeler le constructeur de la classe parent avant d'exécuter son propre constructeur. Il existe deux types d'appels :

a. pour spécifier quel constructeur de la classe parent est appelé

Par exemple : super()//Appelle le constructeur de la classe parent sans paramètres

super(liste de paramètres)//Appelle le constructeur de la classe parent avec Paramètres Méthode constructeur

b. Appel implicite : S'il n'y a pas d'appel explicite, le constructeur sans paramètre de la classe parent est automatiquement appelé, ce qui équivaut à appeler explicitement super(), c'est-à-dire lorsque la valeur par défaut Le constructeur de la classe parent est appelé Vous pouvez omettre Super ()

Attention particulière :

1. L'ordre d'appel de la méthode construite de la sous-classe consiste à appeler d'abord la méthode de structure de la classe parent, et le Le constructeur de la sous-classe est appelé

2. Lorsqu'il existe un constructeur par défaut dans la classe parent, le constructeur de la sous-classe peut omettre l'appel explicite au constructeur de la classe parent

3. n'a qu'un constructeur avec des paramètres, la sous-classe Le mot-clé super doit être utilisé dans le constructeur pour appeler explicitement le constructeur de la classe parent

6. Hiérarchie des classes

1.Java Le langage ne prend pas en charge l'héritage multiple, c'est-à-dire qu'une classe ne peut hériter directement que d'une seule classe.

2. Une classe peut avoir plusieurs classes parentes indirectes.

3. Toutes les classes Java héritent directement ou indirectement de la classe java.lang.Object

4. La classe Object est l'ancêtre de toutes les classes Java, et toutes les classes Java sont définies dans l'objet Les objets de classe ont tous le même comportement

7. Héritage par défaut

1. Lors de la définition d'une classe, le mot-clé extends n'est pas utilisé, alors Cette classe hérite directement de la classe Object

Chapitre 8 : JavaPolymorphisme

1 .Le concept de polymorphisme

Définition officielle : Le polymorphisme signifie que l'appel des méthodes membres d'une classe formera différentes implémentations

Compréhension personnelle : classe parent La référence pointe vers la sous-classe. objet

                                                                                                                                                             Améliorer efficacement l'évolutivité du programme

               Le polymorphisme est divisé en deux types : Basé sur l'écriture

Dynamique le polymorphisme est également appelé liaison dynamique. Habituellement, lorsque l'on parle de polymorphisme, cela fait généralement référence au polymorphisme dynamique.

2. Réécriture de méthode

Si une méthode est définie dans une sous-classe et que son nom, son type de valeur de retour et sa liste de paramètres correspondent exactement à une méthode de la classe parent, on peut dire que la méthode de la sous-classe remplace la méthode de la classe parent.

Attention particulière :

1. Le remplacement de la méthode doit avoir une relation d'héritage comme condition préalable

2. Le nom de la méthode, le type de valeur de retour et la liste des paramètres de la sous-classe doivent être les mêmes que Les méthodes de la classe parent sont les mêmes

3. Les méthodes de la sous-classe ne peuvent pas réduire les droits d'accès de la méthode de la classe parent

4. Dans la même classe, les méthodes peuvent être uniquement surchargé, pas remplacé

3. Application polymorphe

Lorsqu'une référence de classe parent pointe vers un objet de sous-classe et qu'une méthode est appelée via la référence, la réutilisation de la sous-classe est toujours appelée. La méthode après l'écriture

attribue l'objet de la sous-classe à la référence de la classe parent. Ce comportement est appelé "upcasting", qui peut implicitement convertir la référence du parent. classe vers la classe enfant. Citation, ce comportement est appelé "transformation vers le bas", qui doit être obligatoire pour transformer

Attention particulière : lorsque le cither de la classe parent pointe vers le objet de sous-classe, l'appel de la méthode est une analyse dynamique. C'est-à-dire que la sélection dynamique basée sur le type réel de l'objet est appelée liaison dynamique

4. ObjectClass La classe Object est la classe parent ou la classe parent indirecte de toutes les classes Java selon. aux caractéristiques polymorphes, nous pouvons utiliser la référence de la classe Object pour pointer vers n'importe quel objet

Remarque : Si vous pouvez déterminer le type spécifique de l'objet référencé par Object, vous pouvez effectuer une transformation vers le bas (conversion forcée)

5. égal àMéthode Le but de la méthode equals est de détecter si deux objets sont égaux

Fourni par la classe Object L'implémentation de la méthode equals est : détecter si les adresses mémoire de deux objets sont dans la même zone (que ce soit les adresses mémoire sont égales)

De manière générale, nous devons réécrire la méthode equals afin de redéfinir les règles de jugement si deux objets sont égaux.

Compréhension personnelle : La méthode égale consiste à personnaliser les règles du jeu et à formuler les conditions d'égalité des objets en fonction de nos besoins

6. toString méthode La méthode toString renvoie une chaîne décrivant l'objet (celle-ci doit être réécrite lors de l'utilisation directe de l'objet pour la sortie) Méthode)

Compréhension personnelle : Simplifiez le processus de sortie des informations sur l'objet Après la réécriture, vous pouvez directement sortir l'objet

7. finalMot-clé Le mot-clé final peut être utilisé pour modifier les classes, les méthodes et les variables, final signifie immuable

1. Lorsque la classe de modification finale : indique que cette classe ne peut pas être héritée par d'autres types d'héritage

2. Lorsque la méthode de modification finale : indique que la méthode ne permet pas la classe quilt à réécrire

3. Dangdang Quand final modifie une variable : cela signifie que la variable est une constante

Remarque : les constantes modifiées avec final doivent être explicitement initialisées

Chapitre 9 : Classes abstraites et interfaces

Concepts des classes abstraites

1. 🎜>

En regardant le diagramme d'héritage des classes de bas en haut, nous constatons que les classes deviennent progressivement plus générales et plus abstraites.

En raison de la nature générique des variables de classe, nous ne pourrons pas créer de processus d'implémentation significatifs pour les méthodes dans les classes.

Parfois, nous avons besoin d'une classe parent qui définit uniquement une forme générale qui peut être partagée par toutes ses sous-classes et permet à chaque sous-classe de compléter les détails d'implémentation. Une telle classe est appelée une classe abstraite . Remarque : les classes contenant des méthodes abstraites doivent être des classes abstraites. Les classes abstraites peuvent contenir des attributs et des méthodes non abstraites.

2. Méthode abstraite

Lors de la définition d'une méthode Java, vous ne pouvez définir que la partie déclaration de la méthode sans écrire le corps de la méthode ( C'est-à-dire les détails d'implémentation de la méthode), une telle méthode est appelée méthode abstraite. Remarque : Les méthodes abstraites doivent être modifiées avec la classe de mots-clés abstract.

3. Attention particulière

èLes classes abstraites et les méthodes abstraites doivent être modifiées avec le mot-clé abstract

èMéthodes abstraites Il y a pas de corps de méthode et il n'y a pas de paire d'accolades. Il doit y avoir un point-virgule

après la liste des paramètres   è Si la classe contient une méthode abstraite, alors la classe doit être une classe abstraite, mais sur au contraire, la classe abstraite ne contient pas nécessairement de méthodes abstraites.

èLes classes abstraites ne peuvent pas être instanciées (c'est-à-dire que les objets des classes abstraites ne peuvent pas être créés) èVous pouvez déclarer des méthodes statiques dans les classes abstraites

4 . Utilisation de classes abstraites

Puisque les classes abstraites ne peuvent pas créer d'objets, nous ne pouvons utiliser des classes abstraites que par héritage. (Prend en charge le polymorphisme)

Remarque :

1. Si la sous-classe hérite d'une classe abstraite, la sous-classe doit remplacer toutes les méthodes abstraites de la classe parent 2. Si une classe abstraite la classe hérite d'une autre classe abstraite, alors la sous-classe n'a pas besoin de remplacer la méthode abstraite dans la classe parent

5. Résumé des classes abstraites

Les classes abstraites sont principalement héritées par les sous-classes, puis leurs sous-classes jouent leurs rôles Le rôle des classes abstraites se reflète principalement dans les deux aspects suivants :

1. Réutilisation de code (phénomène de surface) )

2. Planifier le comportement de ses sous-classes (compréhension clé) Résumer les classes abstraites en une phrase : Les classes abstraites sont des abstractions de classes

6. Concept d'interface

Ne prend pas en charge davantage d'héritage en Java, mais fournit une forte prise en charge de l'interface

interface : les méthodes de la classe sont spécifiées et il n'est pas nécessaire de prendre en compte la relation d'héritage entre classes Une classe ne peut hériter directement que d'une classe parent, mais peut implémenter plusieurs interfaces

Une interface est une collection de méthodes abstraites et de constantes statiques. Essentiellement, une interface est une classe abstraite spéciale. Cette classe abstraite ne peut contenir que la définition de méthodes abstraites et de constantes statiques, sans variables ni méthodes.

7. Portez une attention particulière à

Parce que les méthodes définies dans l'interface doivent être des méthodes abstraites, donc lors de la définition de méthodes abstraites dans l'interface, vous pouvez Les mots-clés public et abstract sont omis

Les variables définies dans l'interface devant être des constantes statiques, vous pouvez omettre les mots-clés public, static et final lors de la définition des constantes statiques dans l'interface

8. Utilisation des interfaces

Semblable à l'héritage, les classes Java peuvent implémenter des interfaces et la classe d'implémentation doit remplacer toutes les méthodes abstraites de l'interface

Un La classe d'implémentation peut implémenter plusieurs interfaces, séparées par des virgules. Une interface peut également être implémentée par plusieurs classes

Les interfaces prennent également en charge le polymorphisme pour la programmation : les références d'interface pointent vers des objets de classe d'implémentation

Les interfaces peuvent avoir un héritage. relations et prend en charge l'héritage multiple

9. Résumé de l'interface

En une phrase Résumé des interfaces : Les interfaces sont des abstractions de comportements (c'est-à-dire des méthodes)

10. Comparaison des interfaces et des classes abstraites

1. Similitudes :

a. 🎜>

b. Aucune des deux ne peut créer d'objets

c. Les deux peuvent contenir des méthodes abstraites

2. Différences :

a. , mais les interfaces ne peuvent pas

b. Si vous ajoutez une méthode non abstraite à une classe abstraite, cela ne causera aucun dommage à la sous-classe Impact, mais pour les interfaces, elles ne devraient pas changer une fois créées

c. Une classe ne peut hériter que d'une seule classe abstraite, mais une classe peut implémenter plusieurs interfaces

11. Interface prédéfinie Comparable Il existe une classe Arrays dans le package java.util. La méthode de tri de cette classe peut trier un tableau d'objets, mais il existe une condition préalable que les objets du tableau doivent implémenter. l'interface Comparable

Chapitre 1 : Gestion des exceptions

1. L'exception fait référence à un événement qui se produit lors de l'exécution d'un programme, qui peut interrompre l'exécution normale des instructions du programme. En langage Java, les exceptions peuvent être divisées en deux catégories : Erreur : fait référence aux erreurs internes. dans le système JVM, épuisement des ressources et autres situations graves

Exception : en raison d'erreurs de programmation ou de problèmes généraux accidentels causés par des facteurs externes, tels que la racine carrée de nombres négatifs, l'accès au pointeur nul, la tentative de lecture inexistante fichiers et problèmes d'interruption de connexion réseau

                                                                                                                                                                                                            mais                                                  à >

2. Mécanisme de traitement

Lorsqu'une exception se produit lors de l'exécution d'un programme Java, le système détecte et génère automatiquement un objet de classe d'exception correspondant, puis donnez-le au système d'exécution

Le système d'exécution recherche ensuite le code correspondant pour gérer cette exception. Si le système d'exécution ne trouve aucun code capable de gérer l'exception, le moteur d'exécution. Le système se terminera en conséquence. Le programme Java se fermera également

Le programmeur n'a pas la capacité de gérer les erreurs. Dans des circonstances normales, il ne peut gérer que les exceptions

Classez les exceptions et utilisez des classes Java pour représenter les exceptions, qui sont évolutives et réutilisables

Séparez le code du processus anormal du code du processus normal Améliore la lisibilité du programme Vous pouvez détecter les exceptions et les gérer immédiatement, ou vous pouvez les envoyer à la couche supérieure pour traitement, ce qui est flexible

4.

Exception

Class L'exception est divisée en deux branches 1. Exceptions d'exécution : telles que la conversion de type exceptions, exceptions hors limites d'index de tableau, exceptions de pointeur nul, etc. 2. Exceptions au moment de la compilation : exceptions d'exécution d'instructions SQL, exceptions de lecture de fichiers inexistants, etc.

5. Types d'exceptions courants

   

Classe d'exception

Description

异常类

说明

ArithmeticException

算术异常

ArrayIndexOutOfBoundsException

数组索引越界异常

NullPointerException

空指针异常

ClassNotFoundException

类找不到异常

IOException

输入输出异常

FileNotFoundException

文件找不到异常

SQLException

SQL语句执行异常

ArithmeticException Exception arithmétique
ArrayIndexOutOfBoundsException Exception d'index de tableau hors limites
NullPointerException NullPointerException td>
ClassNotFoundException Exception classe non trouvée
IOException Exception d'entrée et de sortie
FileNotFoundException Exception de fichier introuvable
SQLException Exécution d'une instruction SQL exception

6. Le but de la gestion des exceptions

è Retour à un état sûr et connu

è Capacité pour permettre à l'utilisateur d'exécuter d'autres commandes

è Enregistrez tout le travail si possible

è Si nécessaire, quittez pour éviter d'autres dommages

è Les exceptions ne peuvent être utilisées que dans le cadre normal situation, le processus normal de contrôle du programme ne peut pas être contrôlé par des anomalies

è pour éviter un code de bloc TRY trop volumineux. Plus le code de bloc TRY est grand, plus il y a d'anomalies, plus il est difficile d'analyser la cause anormale. , plus il est difficile d'analyser les raisons anormales

7. Utiliser la gestion des exceptions

Java fournit l'instruction try-catch-finally. pour prendre en charge la gestion des exceptions

try block : Code pouvant générer des exceptions

Catch block : Gestion du code lorsqu'une exception se produit

Enfin block : Exécution inconditionnelle du code (généralement utilisé pour release resources)

Remarque : généralement, lorsque le programme génère une exception et entre dans le bloc d'instruction catch, le programmeur peut utiliser la méthode printStackTrace pour afficher les informations d'exception sur la console

8. Throw instruction Exception

Déclarer qu'une exception est levée est la deuxième façon de gérer les exceptions Java si le code d'une méthode peut générer une sorte. d'exception pendant l'exécution, cela n'est pas nécessaire dans cette méthode, ou lorsque vous ne savez pas comment gérer de telles exceptions, vous pouvez utiliser le mot-clé throws pour déclarer une exception levée. Pour le moment, ces exceptions ne seront pas gérées dans la méthode. , mais sera géré par l'appelant de la méthode

Chapitre 3 : Cadre de collection

Présentation des collections

Lors de la création d'un tableau Java, vous devez spécifier la longueur du tableau, une fois le tableau créé, sa longueur ne peut plus être modifiée

Dans de nombreuses situations pratiques, la longueur du tableau est non corrigé, le langage Java fournit donc un conteneur plus avancé, le framework de collection, pour résoudre les problèmes associés

Toutes les collections Java se trouvent dans le package java.util

2. Concept de collection

Une collection est une combinaison de plusieurs usages, Un ensemble composé de "données" aux propriétés similaires ou identiques

De manière systémique, les collections de base dans Java peut être divisé en trois types suivants :

Liste (Liste) :

La collection de listes distingue l'ordre des éléments et autorise les éléments en double

Ensemble :

Set set ne distingue pas l'ordre des éléments et n'autorise pas les éléments en double

Mapping (Map) :

La collection Map enregistre les paires d'informations "clé-valeur". autorisé à être répété. Chaque clé ne peut mapper qu'une seule valeur au maximum

3. Éléments de la collection

        Les collections Java ne peuvent stocker que des données de type de référence (c'est-à-dire des objets). En fait, la collection stocke des références à des objets, pas aux objets eux-mêmes. Les éléments de la collection sont équivalents à des variables de type référence

<.>

4. CollectionInterface

L'interface java.util.Collection est l'interface parent qui décrit les types de collection Set et List, qui définit des méthodes universelles pour les opérations de collection

Méthodes courantes :

boolean add(Object o)

boolean remove(Object o)

int size()

boolean isEmpty()

             boolean contain(Object o)

                            vide clear()

Itérateur itérateur()

Object[] toArray()

5. >ListeInterface L'interface Liste est une sous-interface de l'interface Collection Règlement de l'interface Liste Utilisateurs peut contrôler avec précision la position d'insertion des éléments de la liste et avoir ajouté des fonctions telles que l'accès aux éléments basés sur l'index. Une nouvelle méthode correspondante

a été ajoutée à l'interface void add(int index,Object element)

Objet get (int index)

Object set (int index,Object element)

int indexOf (Object o)

Object Remove (int index)

6.

ArrayList                                                                                                                                        La liste de tableaux à longueur variable ArrayList permet à la valeur d'être disponible pour NULL, et la capacité par défaut est de 10. En plus de l'implémentation de toutes les fonctions définies par l'interface de liste, il fournit également quelques méthodes pour exploiter la taille de la capacité d'ArrayList

public ArrayList ()

public ArrayList(int capacité)

7. Itérateur

java.util L'interface .Iterator décrit un outil pour parcourir divers éléments de collection de manière unifiée, appelé itérateur boolean hasNext()

Object next()

Generics

Le mécanisme générique (Gernerics) a été introduit depuis JavaSE 5.0. Il paramétre en fait les types initialement déterminés et inchangés Avantages des génériques :

1. En tant qu'extension du système de types Java d'origine, l'utilisation de génériques peut améliorer le type de sécurité de type de l'application Java, la maintenabilité et la fiabilité

2. Cela peut résoudre le problème de modélisation des données dans la collection

Comment utiliser :

Lors de la création d'un conteneur de collection, précisez les types d'éléments qu'il est autorisé à enregistrer, puis le compilateur se charge d'ajouter la vérification de validité de type des éléments. Il n'est pas nécessaire d'effectuer un traitement de style lors de l'accès aux éléments de la collection

Résumé : Paramétrage du type de données

9. >HashSetClass La classe java.util.HashSet implémente l'interface java.util.Set et décrit la structure typique de la collection Set Les éléments en double ne sont pas autorisés dans HashSet. Assurez-vous de l'ordre des éléments dans l'ensemble

HashSet est autorisé à contenir des éléments de valeur nulle, mais il ne peut y avoir qu'un seul élément nul

10,

TreeSet classe Le java.util. La classe TreeSet implémente également l'interface java.util.Set, qui décrit la variante Set A de la collection qui peut implémenter la fonction de tri Lorsqu'un élément objet est ajouté à la collection TreeSet, il sera automatiquement inséré dans la séquence d'objets ordonnée selon certaines règles de comparaison pour garantir que le TreeSet La séquence d'objets composée d'éléments de collection est toujours classée par "ordre croissant"

La classe TreeSet prend en charge deux méthodes de tri : le tri naturel (par défaut) et personnalisé tri

Lors de l'utilisation du tri naturel, les éléments de la collection L'interface Comparable doit être implémentée. TreeSet appelle la méthode compareTo de l'objet pour trier les éléments

Il existe certaines classes dans la classe JDK. bibliothèque qui implémente l'interface Comparable, telle que : Integer, Double, String, etc.

Eleven,

ListEnsemble et EnsembleParcours des collections Liste types de collections : vous pouvez utiliser des boucles for ordinaires, des boucles super for et des itérateurs pour parcourir Définir des collections de types : vous pouvez utiliser des boucles super for et des itérateurs pour parcourir

Remarque : Étant donné que la collection de type Set n'a pas d'index, vous ne pouvez pas utiliser de boucles for ordinaires pour parcourir

12

Map (Carte) La carte est une sorte de clé Une collection d'objets pour la cartographie, dont chaque élément contient deux objets (objet clé et objet valeur) Les collections de types de cartes typiques incluent HashMap et TreeMap

Méthode d'ajout d'élément : put (clé d'objet, valeur d'objet)

Obtenez l'objet de valeur via l'objet clé : get (clé d'objet )

Remarque : les objets clés dans Map ne peuvent pas être répétés, mais les objets de valeur peuvent être répétés

.

Treize, TreeMapClasse

Le La classe TreeMap implémente l'interface SortedMap, donc le TreeMap peut être trié en fonction des objets clés, mais la condition préalable est que les objets clés stockés doivent implémenter l'interface Comparable

14, CarteParcours de la collection

Puisque les objets clés ne peuvent pas être répétés, tous peuvent be L'objet clé est considéré comme une collection de type Set

Cette collection de type Set

est obtenue via la méthode keySet() de la collection Map et parcourt la collection Set composée de tous les objets clés

Pendant le processus de traversée, chaque fois qu'un objet clé est récupéré, un objet de valeur peut être obtenu

Chapitre 4 : IO

1. Présentation

La plupart des travaux de programmation impliquent le contrôle du transfert de données (entrée/sortie)

Java Le L'IO de l'IO est implémentée par flux. La transmission de données à venir est considérée comme le but des données et le flux entre la source

La bibliothèque de classes IO se trouve dans le package Java.io Abstracted

<.>

2. Classification des flux

Selon les différentes données de traitement des IO, il est divisé en : flux d'octets et flux de caractères

Selon Selon différentes fonctions, il est divisé en : flux de données et flux d'opération

Selon différentes méthodes de mise en œuvre, il est divisé en : flux de fond et flux de haut niveau

3 .Bytes Stream

Utiliser les octets comme unité de transmission minimale

Composé du flux de données correspondant et du flux d'opération

Classe parent abstraite du flux d'entrée d'octets : InputStream.

Classe parent abstraite du flux de sortie d'octets : OutputStream

Flux de données (flux sous-jacent) : Responsable de la construction d'un canal de transmission de données d'octets et responsable de la transmission des données d'octets. Seules les méthodes d'accès aux données d'octets de base sont fournies. InputStream et OutputStream sont les classes parents de toutes les classes de flux d'octets. Ce sont des classes abstraites et ne peuvent pas être instanciées. Plusieurs méthodes sont définies pour standardiser le comportement des sous-classes, telles que : le flux IO doit être fermé après la fin. 🎜> InputStream /OutputStream

FileInputStream/FileOutputStream

Flux d'opération (flux de haut niveau) : ne pas lire ou écrire de données à partir de périphériques IO, lire ou écrire uniquement des données à partir d'autres flux, à condition qu'ils soient ordinaires les flux ne fournissent pas de méthodes pour simplifier la programmation ou améliorer l’efficacité des E/S. Le flux d'opérations profite du modèle de conception « décorateur », hérite de la classe InputStream elle-même et ajoute un grand nombre de méthodes pour « décorer » d'autres classes de flux de données, évitant ainsi la création d'un grand nombre de nouvelles classes fonctionnelles.

BufferedInputStream/BufferedOutputStream

4. Flux de caractères

Classe parent abstraite du flux d'entrée de caractères : Reader

Classe parent abstraite du flux de sortie de caractères : Writer

Flux de données (flux sous-jacent) :

Reader/Writer

FileReader/FileWriter

Flux d'opération (flux de haut niveau) :

BufferedReader/BufferedWriter

cinq, Flux de pont de caractères d'octets

InputStreamReader : utilisez le modèle de conception de l'adaptateur pour convertir le type InputStream en type Reader

OutputStreamWriter : utilisez le modèle de conception de l'adaptateur pour convertir le type OutputStream au type Writer

6. Concepts de base de la classe File

Classe File : représente une représentation abstraite des noms de chemin de fichier et de répertoire.

La classe File peut réaliser la création, la suppression, le renommage de fichiers, l'obtention du chemin, l'heure de création, etc. C'est la seule classe d'opérations liée au fichier lui-même.

Chapitre 6 : Threads

Un thread est un flux de contrôle séquentiel au sein d'un programme

1. Threads et processus

1. Chaque processus dispose d'un espace de code et de données indépendant, et la commutation de processus est coûteuse

2. Les threads sont légers Les threads du même type partagent le code et l'espace de données. Chaque thread a une pile d'exécution indépendante et un compteur de programme est faible

3. Multi-processus : dans le système d'exploitation, il peut s'exécuter à en même temps Exécuter plusieurs tâches (programmes)

4. Multi-threading : plusieurs flux de séquences sont exécutés simultanément dans la même application

2. Créer des threads

Les threads Java sont implémentés via la classe java.lang.Thread. Chaque thread termine son opération via la méthode run correspondant à un objet Thread spécifique. La méthode run est appelée corps de thread.

Il existe deux manières de créer un thread en langage Java :

A. Implémenter l'interface Runnable

1. Créer une classe et implémenter l'interface Runnable

2 .Réécrivez la méthode run dans l'interface Runnable

3. Créez un objet de la classe d'implémentation

4. Créez un objet thread et passez l'objet de classe d'implémentation dans 5. Appelez The La méthode start démarre le thread

B. Hériter de la classe Thread

1. Définir une classe pour hériter directement de la classe Thread pour créer un thread

2. Remplacer la méthode run dans la classe Thread

3. Créez un objet thread

4. Appelez la méthode start pour démarrer le thread

3. Comparaison de deux types de création de thread

è Utilisez l'interface Runnable pour créer un thread

Vous pouvez séparer le CPU , le code et les données. Former un modèle clair

La classe d'implémentation peut également hériter de certaines propriétés et méthodes utiles d'autres classes

Il est utile de maintenir la cohérence du style du programme

è Hériter directement de la création de la classe Thread Thread

                                                                                                                                                                                                            ne 🎜>

4. Autres concepts

1. Traitement en arrière-plan : Cédez la place à d'autres programmes, tant que le CPU est libre, lorsqu'il n'y a pas de tâches qui ne peuvent être exécutées que lorsque des tâches plus prioritaires et plus urgentes doivent être traitées, telles que : des opérations d'impression de documents, etc.

2 . Thread d'arrière-plan/thread démon : s'exécute en arrière-plan, généralement certains threads secondaires qui fournissent des services à d'autres threads, tels que : thread de récupération de place dans la JVM 3. Thread utilisateur (User Thread) : thread créé par le utilisateur ou créé par le système pour l'utilisateur

4. Main Thread (Main Thread) : Le thread principal pour l'exécution de l'application, qui est un type de thread utilisateur

5. Sub Thread (Sub Sujet) : Créé dans un fil de discussion en cours Nouveau fil de discussion

                                                                                                                                   Public Final Boolean Isdaemon () // Déterminer si un fil de discussion est le fil d'arrière-plan

Public Final Boolean SetDaemon (Boolean Flag) // Définir un thread comme thread d'arrière-plan

Remarque : Lorsqu'une application est une application Lorsque tous les threads utilisateur ont cessé de s'exécuter, qu'ils se terminent normalement ou se terminent prématurément avec une erreur, la JVM se ferme. ne sont pas pris au sérieux et servent les fils de discussion des utilisateurs

6. Cycle de vie du fil

Nouvel état : objet de fil nouvellement créé

État prêt : passe à l'état prêt après avoir appelé la méthode de démarrage

État d'exécution : contrôlé par le planificateur de threads de la JVM

État bloquant : lorsqu'un événement provoquant la pause d'un thread se produit, le thread de la JVM le planificateur l'ajustera à l'état de blocage, comme dans un thread Effectuer des opérations d'E/S ou attendre des événements tels que la saisie de données à partir du clavier

État de fin : lorsque tous les programmes de la méthode run sont exécutés, le thread entrez dans l'état de terminaison

Remarque spéciale : il est interdit de redémarrer un fil de discussion terminé, et un fil de discussion n'est pas autorisé à être démarré plusieurs fois

7. Priorité du fil

La priorité d'un thread Java est représentée par un nombre, allant de 1 à 10

La priorité par défaut du thread principal est 5, et la priorité du thread enfant est la même que la priorité de son thread parent par défaut

Méthodes pertinentes fournies par la classe Thread

public final int getPriority()//Obtenir la priorité du thread

public final void setPriority(int newPriority)//Définir la priorité du fil de discussion

Constante entière statique pertinente :

Thread.MIN_PRIORITY=1

5

                                                                                                                                                     ne dépend pas de la priorité du thread pour contrôler l'ordre d'exécution des threads dans le développement du programme ? Exécuter le thread en cours d'exécution pour entrer dans l'état de blocage, puis se réveiller et passer à l'état prêt après le "délai" spécifié

Méthodes associées fournies par le Classe de discussion :

veille statique publique (long millis) veille statique publique (millis longs, nanos int) Remarque : 1 seconde = 1 000 millisecondes, 1 milliseconde = 1 million de nanosecondes

9. Concession de thread

Laissez le thread en cours d'exécution abandonner activement l'opportunité de traitement CPU qu'il obtient actuellement, mais au lieu de en bloquant le fil, il le redirigera. Entrez dans l'état prêt

Méthodes associées fournies par la classe Thread :

public static void return()10. Suspension et récupération du fil

Suspendre : mettre en pause le fil de discussion en cours d'exécution, le mettre dans un état bloqué et ne reprendra pas automatiquement son exécution

Reprendre : reprendre un fil suspendu

Méthodes pertinentes fournies par la classe Thread : public final void suspend()//Suspension du fil public final void curriculum vitae()//Thread CV

11. Synchronisation des threads et blocage

1. Partage de données multithread : dans les opérations multithreads, plusieurs threads peuvent traiter les mêmes données à la fois. en même temps. Une ressource est une donnée partagée entre plusieurs threads.

2. Synchronisation des threads : pour résoudre le problème du partage de données, la synchronisation doit être utilisée. La soi-disant synchronisation signifie qu'un seul thread parmi plusieurs threads peut exécuter le code spécifié dans la même période, et les autres. les threads doivent attendre que ce thread soit terminé avant de pouvoir continuer l'exécution.

Il existe deux manières de synchroniser les threads : (1) Bloc de code de synchronisation synchronisé (objet à synchroniser) {

                      // Opérations pour être synchronisé

}

(2) Méthode de synchronisation

                  méthode d'annulation publique synchronisée(){

                                                                                                                          Quand, il existe plusieurs directives simples à suivre qui contribuent grandement à éviter les risques de blocages et de problèmes de performances : Déplacez le prétraitement et le post-traitement qui ne changent pas avec les threads hors des blocs synchronisés.

                                                    (2) Ne pas bloquer. Tels que la saisie utilisateur et d'autres opérations.

(3) N'appelez pas de méthodes de synchronisation sur d'autres objets tout en maintenant le verrou.

4. Blocage des threads : trop de synchronisation peut provoquer un blocage. Les opérations de blocage ne se produisent généralement que lorsque le programme est en cours d'exécution.

Remarque : Pour partager des ressources en multi-threads, une synchronisation est requise, mais une synchronisation trop importante peut provoquer un blocage.

Chapitre 7 :

Socket

Programmation réseau

1. Qu'est-ce qu'un réseau informatique ? 🎜>

Socket

Programmation

Deux processus peuvent échanger des données via une connexion de communication réseau bidirectionnelle . Le point final de ce lien de communication est appelé For "Socket" (Socket)

Socket est généralement utilisé pour implémenter la connexion client-serveur Dans le package java.net, deux classes Socket et ServerSocket. sont définis, qui sont utilisés pour implémenter un client et un serveur connectés bidirectionnels3 Socket

<.>Étapes de base de la programmation

1. Établir une connexion réseau

2. Ouvrir le flux d'entrée/sortie connecté au Socket 3. Lire les données via le flux IO ouvert/opération d'écriture 4. Fermez le flux IO ouvert et l'objet Socket Contenu supplémentaire 1 : Interface utilisateur graphique Interface utilisateur graphique (GUI) -interface utilisateur graphique) fournit une méthode de fonctionnement plus humaine et plus pratique pour l'interaction visuelle entre les utilisateurs et les programmes. Par conséquent, la conception d'une application d'interface utilisateur graphique doit avoir ses éléments caractéristiques, tels que des menus, des barres d'outils, des contrôles. etc. Java fournit une méthode de développement d'applications rapide basée sur des composants GUI pour la conception d'applications d'interface utilisateur graphique, et fournit un grand nombre de composants disponibles pour prendre en charge le développement piloté par les événements.

1.

Balançoire

et

AWT

AWT : les premiers Java incluaient une bibliothèque de classes Abstract Window Toolkit (AWT) pour la programmation graphique de base, telle que Button, Checkbox, List, etc. Ces classes sont toutes des sous-classes de la classe Component

Les composants AWT sont sont considérés comme des composants lourds car ils s'appuient sur le système local pour prendre en charge le dessin et l'affichage. Chaque composant AWT a un composant associé dans le système de fenêtre local

Composant Swing Il est écrit en code Java pur et est appelé composant léger. Il ne s'appuie pas sur des composants locaux pour prendre en charge son affichage, mais est entièrement dessiné et affiché par du code Java, il est donc beaucoup plus efficace que le composant AWT habituel

Swing : La bibliothèque Swing est plus récente. pour éviter la duplication des noms, toutes les classes de composants Swing commencent par la lettre majuscule J. La grande majorité des composants Swing sont des sous-classes de la classe JComponent

2. Conteneur de formulaire

JFrame (form) : programme d'application de niveau supérieur window

JDialog (Dialog) : boîtes de dialogue modales et non modales qui collectent les entrées de l'utilisateur

JPanel (Panel) : un petit conteneur qui accueille une partie de l'interface

Contenu supplémentaire deux : JDBC

1. Présentation

La plupart des langages de développement fournissent un accès à la base de données

JDBC

1. 🎜> JDBC est un ensemble d'interfaces et de classes fournies par Sun, qui est encapsulé dans le package java.sql et est utilisé pour accéder à la base de données pilotes et classes tiers fournis par les fournisseurs de bases de données Package , peut accéder à une base de données spécifique 2.

JDBC

JDBC (Java Database Connectivity ) Connexion à la base de données Java, prend en charge les applications Java pour se connecter à la base de données

Fonctions de base :

1. Prend en charge les instructions SQL de base, implémente les fonctions d'exploitation de la base de données dans les programmes Java et simplifie le processus d'exploitation 2. Fournir une variété de méthodes de connexion à la base de données 3. Fournir une interface d'exploitation unifiée pour une variété de bases de données différentes

Trois, les étapes de fonctionnement

1. Soyez prêt à exploiter une certaine base de données

Introduisez les packages et les classes nécessaires

Chargez le pilote JDBC

Source des données d'identification

2. Établissez un canal de connexion avec la base de données

Allouez un objet Connection

3. Lancez l'appel et expliquez ce que vous voulez faire

                                       écrire des instructions SQL Allouer un objet Statement Utiliser l'objet Statement pour exécuter des instructions SQL

4. Obtenez les résultats souhaités et traitez les résultats

Interrogez les données de l'objet ResultSet renvoyé

5. Une fois le traitement terminé, effectuez le travail de finition

                                                                                                                                                                                                                                              hors de java.sql. La gestion des pilotes fournit des fonctions de gestion pour différents pilotes de base de données

interface java.sql.Driver Pilote de base de données, pilote logiciel java.sql . Interface de connexion

Objet de connexion connecté à une base de données spécifique

interface java.sql.Statement

Objet qui exploite la base de données

java.sql.ResultSet interface

Une collection de plusieurs lignes et colonnes

5. Pilote

Pilote : Afin de permettre à l'ordinateur de fonctionner système pour faire fonctionner un certain programme d'interface fourni par une sorte de matériel ou de logiciel

Pilote de base de données : une collection de codes requis par une application pour faire fonctionner une certaine base de données. Il peut être compris comme un module logiciel qui introduit une mutuelle. compréhension entre l'application et la base de données

Énumération : L'énumération consiste à permettre à la valeur d'un certain type de variable d'être seulement une parmi plusieurs valeurs fixes, sinon le compilateur signalera une erreur. L'énumération permet au compilateur de compiler. Vous pouvez contrôler les valeurs illégales attribuées par le programme source. Cet objectif ne peut pas être atteint pendant la phase de développement en utilisant des variables ordinaires. Après JDK1.5, le mot-clé enum est utilisé pour définir un nouveau type, appelé type énumération.

La classe d'énumération définie à l'aide du mot-clé enum équivaut en fait à définir une classe, qui hérite simplement de la classe Enum.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn