Une brève analyse de l'héritage et de la composition en Java
Avant-propos
Java est un langage orienté objet. Tous ceux qui ont étudié Java savent que l'encapsulation, l'héritage et le polymorphisme sont les trois caractéristiques de l'orientation objet. Tout le monde aura plus ou moins l'impression lorsqu'il découvrira l'héritage pour la première fois : l'héritage peut m'aider à réaliser la réutilisation des classes. Par conséquent, de nombreux développeurs utiliseront naturellement l'héritage de classe lorsqu'ils auront besoin de réutiliser du code, car c'est ainsi que cela est écrit dans le livre (c'est ainsi que l'enseignant enseigne). Cependant, c’est en réalité faux. Une utilisation intensive et à long terme de l'héritage entraînera des coûts de maintenance élevés pour le code.
En fait, je n'avais jamais entendu parler du terme combinaison lorsque j'ai appris Java pour la première fois, et le professeur ne l'a jamais expliqué. J'ai toujours pensé que j'avais manqué certains points de connaissance par moi-même. cas. La combinaison est Définissons le nom comme une chose pensante pour le moment. Je pense que les lecteurs l'ont rencontré, mais ils ne savent pas qu'il porte ce nom.
En fait, la soi-disant combinaison consiste à créer une nouvelle classe pour appeler la classe déjà créée et déboguée, alors cette nouvelle classe peut être appelée une combinaison
Par exemple, je crée un People
public class People { private String name; private int age; public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public int getAge(){ return this.age; } public void setAge(int age){ this.age = age; } }
Ensuite, je souhaite utiliser cette classe maintenant, je peux ajouter de nouvelles fonctionnalités à cette classe. cette fois, nous pouvons créer une nouvelle classe, puis créer des objets People dans cette classe.
Par exemple, je crée maintenant une classe appelée Étudiant
class Student { People people = new People(); }
Ensuite, je peux ajouter quelques attributs à cette classe, comme définir une identité comme étudiant, je n’en parlerai pas ici.
Examinons ensuite l'héritage. En fait, l'héritage et la combinaison ont le même objectif. Examinons d'abord l'héritage.
En Java, il existe un mot-clé appelé extends, qui peut nous aider à hériter. La classe héritée est appelée la classe parent, elle peut également être appelée la classe de base, ou la super classe, et l'héritier. On l'appelle une sous-classe ou une classe dérivée, etc.
Ici on définit une classe
public class Student extends People{ //doSomething }
De cette façon, la classe hérite du parent Toutes les méthodes membres et variables membres de la classe, mais notez que les champs ou méthodes déclarés avec des autorisations privées ne seront pas hérités.
Pour le prouver, nous écrivons une méthode dans la classe d'étudiant
public String re(){ return this.name; }
Ici, le compilateur signalera une erreur "People.name n'est pas visible " , on peut voir à partir d'ici que les champs ou méthodes déclarés comme privés ne peuvent pas être hérités. Si vous souhaitez en hériter, vous pouvez changer private en protected. Dans ce cas, nous pouvons hériter avec succès du champ de nom. .
De cette façon nous initialisons tous les champs dans People, il suffit d'ajouter ce bloc de code au code
{ this.age = 10; this.name = "zhangsan"; }
Suivant dans la fonction principale Déclarer cet élève
Student student = new Student(); System.out.println(student.getAge());
Maintenant, nous sommes surpris de constater que cette méthode d'écriture est réalisable. Bien que nous n'ayons déclaré aucun champ ni méthode dans la sous-classe, nous pouvons toujours appeler getAge( ); out 10 en douceur
C'est parce que nous n'avons surchargé aucune méthode dans la sous-classe, donc le getAge de la classe parent est appelé à ce moment, et il est facilement accessible Les champs déclarés en privé dans le classe parente.
Après avoir lu ceci, je pense que tout le monde a une compréhension préliminaire de l'héritage. Donc, dans le mécanisme d'héritage, comment les constructeurs de chaque classe sont-ils appelés la réponse est de les appeler dans l'ordre de la classe parent à l'enfant ? class .
Lors de la démonstration, je déclare d'abord trois classes Temp1, Temp2 et Temp3. En même temps, Temp3 hérite de Temp2 et Temp2 hérite de Temp1. constructeur de chaque classe Mettez une déclaration imprimée
//Temp1 System.out.println("i'm temp1"); //Temp2 System.out.println("i'm temp2"); //Temp3 System.out.println("i'm temp3");
Pour plus de commodité, je viens de l'écrire ici, mais chacun doit faire attention à ce qu'elles soient placées dans la méthode de construction de chaque classe.
On crée un objet Temp3 dans la fonction principale
public class Mian{ public static void main(String[] args){ Temp3 temp3 = new Temp3(); } }
On regarde la console et on imprime
i'm temp1 i'm temp2 i'm temp3
On peut voir à partir de cela que nous devons d'abord créer l'objet temp3, trouver le mot-clé extends, puis remonter la chaîne d'héritage, trouver temp2 et trouver le mot-clé extends, puis trouver temp1, puis appeler temp1 Méthode constructeur, puis appelez-la un par un.
Résumé
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra être utile aux études ou au travail de chacun. Si vous avez des questions, vous pouvez partir. un message à communiquer.
Pour plus d'articles liés à une brève analyse de l'héritage et de la combinaison en Java, veuillez faire attention au site Web PHP chinois !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Solutions pour convertir les noms en nombres pour implémenter le tri dans de nombreux scénarios d'applications, les utilisateurs peuvent avoir besoin de trier en groupe, en particulier en un ...

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Comment convertir les noms en nombres pour implémenter le tri au sein des groupes? Lors du tri des utilisateurs en groupes, il est souvent nécessaire de convertir le nom de l'utilisateur en numéros afin qu'il puisse être différent ...

Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...
