Maison Java javaDidacticiel Une brève analyse de l'héritage et de la composition en Java

Une brève analyse de l'héritage et de la composition en Java

Jan 21, 2017 pm 04:37 PM

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;
 }
}
Copier après la connexion


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();
}
Copier après la connexion

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
}
Copier après la connexion

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;
}
Copier après la connexion

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";
}
Copier après la connexion

Suivant dans la fonction principale Déclarer cet élève

Student student = new Student();
System.out.println(student.getAge());
Copier après la connexion

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");
Copier après la connexion

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();
 }
}
Copier après la connexion

On regarde la console et on imprime

i'm temp1
i'm temp2
i'm temp3
Copier après la connexion

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 !

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Apr 19, 2025 pm 04:51 PM

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

Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Apr 19, 2025 pm 11:42 PM

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

Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Apr 19, 2025 pm 06:21 PM

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

Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Apr 19, 2025 pm 11:45 PM

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

Comment convertir les noms en nombres pour implémenter le tri et maintenir la cohérence en groupes? Comment convertir les noms en nombres pour implémenter le tri et maintenir la cohérence en groupes? Apr 19, 2025 pm 11:30 PM

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

Comment convertir en toute sécurité les objets Java en tableaux? Comment convertir en toute sécurité les objets Java en tableaux? Apr 19, 2025 pm 11:33 PM

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? Comment convertir les noms en nombres pour implémenter le tri au sein des groupes? Apr 19, 2025 pm 01:57 PM

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 utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Apr 19, 2025 pm 11:36 PM

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

See all articles