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

高洛峰
Libérer: 2017-01-21 16:37:31
original
1269 Les gens l'ont consulté

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 !

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal