Architecture de programmation (06): orientée objet Java

Code source de cet article: GitHub · cliquez ici || GitEE · cliquez ici

1. Concepts de base

1. Concept orienté objet

L'idée principale de la programmation orientée objet est de décomposer chaque transaction qui constitue un problème en différents objets. Le but de la création d'objets n'est pas de terminer une étape, mais de décrire le comportement d'une chose dans toute l'étape de résolution de problème.

Architecture de programmation (06): orientée objet Java

2. Classes et objets

Objet: la seule chose qui existe vraiment; dans l'application, l'objet est une combinaison de données et d'action, qui peut non seulement effectuer des opérations, mais également enregistrer les résultats des opérations.

Classe: Un concept abstrait, qui est en fait l'extraction d'attributs et de comportements communs de certains types de choses, par exemple, la classe User [name.age.gender] est utilisée pour décrire les informations de base des utilisateurs.

Comment comprendre l'orientation objet dans le développement Java: créez un système d'API d'interface objet approprié, créez des objets appropriés et résolvez les problèmes appropriés. Par exemple, l'API JDK a défini des classes et les objets créés par ces classes sont utilisés directement; ils sont créés par des classes personnalisées Utilisation d'objets, en mode MVC, différentes fonctions métier créent différentes interfaces et systèmes de classes.

3. Propriétés et méthodes

Variable de classe

Différence d'emplacement:

  • Les variables membres sont définies en dehors de la méthode, à l'intérieur de la classe;
  • Les variables locales sont définies dans la méthode.

Différence de fonction:

  • Le rôle des variables membres est de décrire les propriétés publiques d'une classe d'objets.
  • Le rôle des variables locales est de fournir une variable à usage interne dans la méthode.

Différence de valeur initiale:

  • Les variables membres ont des valeurs initiales par défaut.
  • Les variables locales n'ont pas de valeur initiale par défaut et doivent être initialisées avant de pouvoir être utilisées.

Cycle de la vie:

  • Il existe lorsque l'objet est créé et disparaît lorsque l'objet disparaît.
  • Les variables locales existent lorsque l'instruction qui crée la variable est exécutée lorsque la méthode correspondante est appelée. Une fois que la variable locale sort de sa propre portée, elle disparaît immédiatement de la mémoire.

Méthode en classe

Une description spécifique d'une fonction de classe, qui peut être une méthode de classe ou une méthode objet;

  • Les méthodes de classe, également appelées méthodes statiques, sont directement appelées à l'aide de classes, des classes d'outils couramment utilisées;
  • Les méthodes objet, également appelées méthodes d'instance, sont appelées à l'aide d'objets de classe, méthodes API courantes;

Méthode de construction

La fonction du constructeur est d'initialiser l'objet correspondant. S'il n'y a pas de type de valeur de retour, le nom de la fonction du constructeur doit être cohérent avec le nom de la classe. Si une classe ne déclare pas explicitement un constructeur, alors le compilateur java Ajoutez un constructeur sans paramètre à la classe. Si une classe a été explicitement écrite avec un constructeur, le compilateur Java n'ajoutera pas de constructeur sans paramètre pour la classe. Le constructeur peut être Il y a plusieurs surcharges dans une classe.

4. Interface

L'interface est une classe spéciale. Le modificateur par défaut des variables membres de l'interface est public-static-final et les méthodes de l'interface sont des méthodes abstraites. Le modificateur par défaut est public-abstract. L'interface ne peut pas créer d'objets et n'a pas de méthode de construction. Oui, l'interface est utilisée lorsque la classe est implémentée. Si une classe non abstraite implémente une interface, toutes les méthodes de l'interface doivent être implémentées.

Le rôle de l'interface: le découplage du programme, la définition de la spécification de contrainte de la classe d'implémentation, si vous avez besoin d'étendre la fonction spéciale, elle peut également être implémentée en fonction du formulaire d'interface.

La relation entre classe et interface: relation de réalisation multiple; la relation entre interface et interface: relation d'héritage multiple.

5. Surcharge et réécriture

Réécriture de méthode

Lorsque la fonction de la classe parent ne peut pas répondre aux besoins de la classe enfant, la méthode peut être réécrite, c'est-à-dire que la classe parent enfant utilise la fonction du même nom et que la méthode remplacée par la classe enfant utilise l'annotation @Override. Il existe ici une relation d'héritage.

  • Le nom de la méthode et la liste des paramètres doivent être cohérents;
  • Le modificateur d'autorisation de la sous-classe doit être supérieur ou égal au modificateur d'autorisation de la classe parent;
  • Le type de valeur de retour de la sous-classe doit être inférieur ou égal au type de valeur de retour de la classe parent;
  • Le type d'exception levé par la sous-classe doit être inférieur ou égal au type d'exception levé par la classe parent;

Surcharge de méthode

Il existe au moins deux fonctions portant le même nom dans une classe, appelées surcharges de méthode. Les noms des fonctions doivent être cohérents et les listes de paramètres sont incohérentes (le nombre de paramètres ou les types de paramètres sont incohérents).

6. Packages et autorisations

Modificateur d'autorisation

Le modificateur d'autorisation permet de contrôler la visibilité de la portée du membre modifié, divisée en: public, privé, protégé, par défaut (aucune modification). Seuls public et protected sont accessibles sous différents packages, et protected doit être accessible dans le cadre d'une relation d'héritage.

Paquet de paquet

Un package peut être compris comme un dossier dans un système informatique pour résoudre le problème des conflits répétés de noms de classe. Le nom du package est entièrement en minuscules et l'instruction doit être située dans la première instruction du fichier java.

2. Fonctionnalités de base

Paquet

Masquez les détails d'implémentation interne de la classe et n'exposez que l'interface externe. Par exemple, tous les attributs de membre (variables membres) de la classe d'entité générale dans le scénario de développement réel doivent être encapsulés, ce qui peut être considéré comme une barrière de protection pour empêcher le code de cette classe Et les données sont accessibles de manière aléatoire par le code défini par la classe externe. Une encapsulation appropriée peut faciliter la compréhension et la maintenance du code du programme et renforcer la sécurité.

hériter

Sur la base de la classe parente existante, reconstruisez une nouvelle classe, c'est-à-dire la sous-classe. Grâce à l'objet de sous-classe, vous pouvez accéder aux variables membres non privées et aux méthodes membres de la classe parente, et remplacer les méthodes membres non privées de la classe parente. Le rôle de l'héritage Cela peut améliorer la réutilisabilité du code.

Polymorphisme

Le polymorphisme signifie qu'un objet peut avoir plusieurs formes, par exemple: la variable de type de référence de la classe parente pointe vers l'objet de la sous-classe; la variable de type de référence de l'interface pointe vers l'objet de la classe d'implémentation de l'interface; cette situation existe dans la relation d'héritage ou de réalisation , Dans le cas du polymorphisme, quand il y a une variable membre avec le même nom dans la classe sous-parent, tous les membres de la classe parent sont accessibles, à l'exception des fonctions non statiques avec le même nom.

3. Mots clés courants

1. Ce mot-clé

Le mot clé this représente l'objet appelant de la fonction. S'il existe des variables membres et des variables locales portant le même nom, la valeur par défaut est d'accéder aux données de la variable locale à l'intérieur de la méthode. Les données de la variable membre peuvent être spécifiées par le mot clé this, dans un constructeur Vous pouvez appeler un autre constructeur pour initialiser l'objet.

2. Mot-clé statique

Variable membre statique modifiée: s'il y a des données qui doivent être partagées pour tous les objets, la modification statique peut être utilisée.

Fonction membre statique modifiée: la méthode statique est accessible sans dépendre d'un objet. Les méthodes / variables membres non statiques doivent s'appuyer sur des objets spécifiques pour être appelées.

Blocs de code statiques modifiés: le mot clé static est utilisé pour empaqueter des blocs de code statiques afin d'améliorer les performances du programme. Les blocs de code statiques peuvent être placés n'importe où dans la classe. Lorsque la classe est chargée pour la première fois, chaque bloc de code statique sera exécuté à son tour.

3. Super mot-clé

Le mot-clé super représente une référence à l'espace de classe parent. Lorsqu'il y a des membres portant le même nom dans la classe sous-parent, la sous-classe par défaut pour accéder aux membres de la sous-classe et le mot-clé super peut être utilisé pour spécifier l'accès aux membres de la classe parent; lors de la création d'un objet de sous-classe , La méthode de construction par défaut de la classe parente sans paramètres sera appelée en premier, et la méthode de construction de la classe parente peut être spécifiée par le mot clé super.

4. Instanceof mot-clé

Le rôle du mot-clé instanceof: pour déterminer si un objet appartient à une catégorie spécifiée, l'objet et la catégorie spécifiée doivent avoir une relation d'héritage ou de réalisation. Ce mot clé est généralement utilisé pour juger avant la conversion de type forcée, puis pour effectuer la conversion.

5. Mots clés finaux

Classe finale modifiée: indique que la classe ne peut pas être héritée. Les variables membres de la classe finale peuvent être définies sur final si nécessaire, mais notez que toutes les méthodes membres de la classe finale seront implicitement désignées comme méthodes finales.

Méthode de modification finale: la méthode de verrouillage empêche toute classe héritée de modifier sa signification; la deuxième raison est l'efficacité, la méthode finale de la classe parente ne peut pas être remplacée par la sous-classe.

Variable modifiée finale: une variable membre est marquée comme constante et ne peut être affectée qu'une seule fois. La valeur ne changera pas après l'affectation. Lorsque le type de paramètre de la fonction est déclaré comme final, cela signifie que le paramètre est en lecture seule.

6. Mots-clés abstraits

Classe abstraite modifiée: la classe abstraite ne peut pas être instanciée. La différence entre une classe abstraite et une interface est qu'il ne peut y avoir aucune méthode d'instance dans l'interface pour implémenter la logique métier, tandis que les classes abstraites peuvent avoir des méthodes d'instance et implémenter une logique métier. Les classes abstraites ne peuvent pas être utilisées Modification finale du mot-clé, car la classe modifiée finale ne peut pas être héritée, et pour les classes abstraites, il est nécessaire d'implémenter des méthodes abstraites par héritage.

Méthode de modification abstraite: la méthode abstraite n'a pas de corps de méthode, ce qui est similaire à la méthode d'interface. La méthode abstraite ne peut pas être modifiée avec private, car la méthode abstraite doit être implémentée par une sous-classe et la méthode abstraite ne peut pas être modifiée avec statique. Classe abstraite. La méthode abstraite n'a pas de sens.

Quatre, analyse de scène

1. Modèle de conception

L'orientation objet et les modèles de conception sont des concepts très en vogue ces dernières années. Questions à poser lors des entretiens. Si vous souhaitez utiliser des modèles de conception en programmation, vous devez comprendre le mécanisme orienté objet, qui est un degré élevé d'abstraction et d'encapsulation du problème, et couche par couche. Résolvez la réalisation, améliorez la réutilisabilité du code, la lisibilité, la flexibilité, la maintenabilité, et le plus important est d'avoir un style élevé.

2. Système de flux IO

Si vous souhaitez comprendre le code des modèles orientés objet et de conception, vous pouvez vous concentrer sur la lecture de l'API du système de flux IO en Java, de l'interface de niveau supérieur, de l'implémentation descendante, de la classe d'empaquetage et de la classe d'extension. Ces deux concepts sont vraiment utilisés à l'extrême. Bien sûr, le flux IO est au cœur du traitement des fichiers et il vaut également la peine de lire le code source.

3. Modèle de développement MVC

Dans le modèle de développement MVC, l'interface de couche métier et l'implémentation de la couche métier; l'interface de base de données et l'implémentation d'accès aux données sont également l'interface d'utilisation orientée objet et la classe d'implémentation les plus élémentaires de l'interface.

Cinq, adresse de code source

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

Lecture recommandée: système de programmation de finition

Numéro de série nom du projet Adresse GitHub Adresse GitEE conseillé
01 Java décrit des modèles de conception, des algorithmes et des structures de données GitHub · cliquez ici GitEE · Cliquez ici ☆☆☆☆☆
02 Fondation Java, accès concurrentiel, orienté objet, développement Web GitHub · cliquez ici GitEE · Cliquez ici ☆☆☆☆
03 Explication détaillée du cas des composants de base du microservice SpringCloud GitHub · cliquez ici GitEE · Cliquez ici ☆☆☆
04 Cas complet de l'architecture de microservice SpringCloud GitHub · cliquez ici GitEE · Cliquez ici ☆☆☆☆☆
05 Premiers pas avec l'application de base du framework SpringBoot à avancé GitHub · cliquez ici GitEE · Cliquez ici ☆☆☆☆
06 Le framework SpringBoot intègre et développe un middleware commun GitHub · cliquez ici GitEE · Cliquez ici ☆☆☆☆☆
07 Cas de base de la gestion, de la distribution et de la conception d'architecture GitHub · cliquez ici GitEE · Cliquez ici ☆☆☆☆☆
08 Série Big Data, stockage, composants, informatique et autres frameworks GitHub · cliquez ici GitEE · Cliquez ici ☆☆☆☆☆   

Je suppose que tu aimes

Origine blog.51cto.com/14439672/2540516
conseillé
Classement