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 !