Hériter des variables et des méthodes qui sont le contenu d'une classe vers d'autres classes.
Caractéristiques des langages de programmation orientés objet tels que java, ruby et python
La classe d'origine est la classe parente (super classe / classe de base) La classe héritée est une classe enfant (sous-classe / classe dérivée)
--- Image d'héritage ---
Animal (classe parent) variable · Nom ・ Âge Méthode ・ Manger · Marcher
↓↓
Chien (classe enfant) Méthodes supplémentaires ・ Écorce (aboiements) · Courir
humain (classe enfant) Méthodes supplémentaires · Parler · Travail
Comme le montre l'image ci-dessus, ** Créez plusieurs classes avec des éléments et des propriétés communs ** Utilisez parfois l'héritage.
//Classe animale comme classe mère
public class Animal{
public String name; //Nom
public int age; //âge
public void eat(String something) {
//manger
System.out.println(something + "j'ai mangé");
}
public void walk(int a){
//marcher
System.out.println(a.toString(); + "J'ai marché un mètre");
}
}
//Classe de chien créée en héritant d'une classe animale
public class Dog extends Animal {
//écorce
public void bark(){
System.out.println("un");
}
//Courir
public void run() {
}
}
//Classe humaine créée en héritant d'une classe animale
public class Human extends Animal {
//Parler
public void talk(String tk){
System.out.println("「" + tk + "」");
}
//Je fais le travail
public void work(){
}
}
Si vous n'utilisez pas l'héritage
//Classe de chien faite sans hériter de classe animale
public class Dog {
public String name; //Nom
public int age;//âge
public void eat(String something) {
//manger
System.out.println(something + "j'ai mangé");
}
public void walk(int a){
//marcher
System.out.println(a.toString(); + "J'ai marché un mètre");
}
//écorce
public void bark(){
System.out.println("un");
}
//Courir
public void run() {
}
}
//Classe humaine créée sans hériter de classe animale
public class Human extends Animal {
public String name; //Nom
public int age;//âge
public void eat(String something) {
//manger
System.out.println(something + "j'ai mangé");
}
public void walk(int a){
//marcher
System.out.println(a.toString(); + "J'ai marché un mètre");
}
//Parler
public void talk(String tk){
System.out.println("「" + tk + "」");
}
//Je fais le travail
public void work(){
}
}
Les variables et méthodes de la classe parent sont dupliquées dans les deux classes enfants. ❌ De plus, si vous souhaitez changer la classe parente, vous devez la changer à deux endroits. ❌ Si les classes parentes sont regroupées, une seule modification est requise. ⭕️
Par exemple, lorsque vous souhaitez placer tous les animaux sur une piste, vous pouvez les traiter comme des variables tant qu'ils héritent de la même classe d'animaux.
//Un tableau qui stocke des objets de type classe animale
Animal[] animals;
//Les chiens et les humains peuvent être mis ensemble
animals = { new Dog(); new Human()};
Les noms d'animaux et les aliments ont également des chiens. En d'autres termes, la fonction de la classe parent est invisible, mais elle a également la classe enfant.
Vous pouvez remplacer la méthode héritée. Cela permet à la même méthode d'avoir des fonctions différentes. Cependant, les arguments doivent être alignés.
Vous pouvez créer une classe petit-enfant avec une classe enfant comme parent.
public class Animal {
}
public class Dog extends Animal {
}
pubic class WhiteDog extends Dog {
public String color = "white";
}
Ce qui précède crée un chien blanc comme classe de petits-enfants
Si final est ajouté, la méthode ne peut pas être écrasée. Il est utilisé lorsque vous ne souhaitez pas modifier le processus sans autorisation.
class Tuna extends Animal, Fish
Ce qui précède essaie d'hériter des animaux et des poissons au thon, mais ne peut pas
[* Qu'est-ce qu'un constructeur](https://www.javadrive.jp/start/constructor/index1.html#:~:text=%E3%82%B3%E3%83%B3%E3%82%B9%E3 % 83% 88% E3% 83% A9% E3% 82% AF% E3% 82% BF% E3% 81% A8% E3% 81% AF% E3% 80% 81% E3% 82% AF% E3% 83 % A9% E3% 82% B9% E3% 81% 8B% E3% 82% 89,% E3% 81% AE% E4% B8% BB% E3% 81% AB% E8% A1% 8C% E3% 81% 84% E3% 81% BE% E3% 81% 99% E3% 80% 82 & texte =% E3% 83% A1% E3% 83% B3% E3% 83% 90% E5% A4% 89% E6% 95% B0 % E3% 81% AE% E5% AE% 9A% E7% BE% A9% E6% 99% 82% E3% 81% AB,% E3% 81% 93% E3% 81% A8% E3% 81% 8C% E5% 87% BA% E6% 9D% A5% E3% 81% BE% E3% 81% 9B% E3% 82% 93% E3% 80% 82) Une méthode qui est automatiquement exécutée lorsqu'un objet est créé à partir d'une classe
public Dog extends Animal {
//constructeur
Dog(){
}
}
public Dog extends Animal {
//constructeur
Dog(){
super();
}
}
Le code ci-dessus et ci-dessous ont la même signification. Si vous essayez de remplacer le constructeur dans une classe enfant, le constructeur de la classe parent est également exécuté implicitement. Même si la classe enfant n'a pas de constructeur, le constructeur de la classe parent est exécuté.
Recommended Posts