À propos de l'héritage Java

Héritage

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(){
 }
}

Avantages de l'utilisation de l'héritage

1. Le nombre de lignes de programmation est réduit, ce qui économise du temps et des efforts.

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

2. Les classes de la même source d'héritage peuvent être gérées ensemble

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()};

Fonctions d'héritage

Vous pouvez utiliser les champs (variables, méthodes) de la classe parent dans la classe enfant.

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.

La classe enfant peut écraser (remplacer) la méthode de la classe parent

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.

L'héritage peut être hérité (classe petit-enfant)

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

Notes sur l'héritage

N'écrasez pas les champs qui utilisent final pour la classe parent

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.

Deux classes ne peuvent pas être héritées en même temps

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

Le constructeur n'est pas hérité et est exécuté implicitement

[* 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

À propos de l'héritage Java
À propos de l'héritage (Java Silver)
À propos de l'héritage
[Java] Héritage
Héritage Java
Héritage Java
java (héritage)
À propos de l'interface Java
[Java] À propos des fonctionnalités de Java 12
[Java] Héritage de classe
[Java] À propos des tableaux
À propos de l'héritage de classe.
Quelque chose à propos de java
Où est Java
À propos des fonctionnalités Java
À propos des threads Java
À propos des tableaux Java
À propos de l'interface, interface java
À propos de Java Var
À propos de Java Literal
À propos des commandes Java
À propos de la sortie du journal Java
À propos de l'interface fonctionnelle Java
[Java] Surcharge / Remplacer / Héritage
Java, à propos d'un tableau à deux dimensions
À propos de la division de classe (Java)
À propos de [Java] [StreamAPI] allMatch ()
À propos de la classe Java StringBuilder
[Java] À propos de la classe Singleton
Résumer l'héritage Java (Java Silver 8)
À propos de la liaison de méthode Java
[Java] À propos des classes anonymes
A propos des méthodes de fractionnement (Java)
[Java Silver] À propos de l'initialisation
A propos de la liste des baies Java
À propos du polymorphisme Java Super ()
À propos de la classe Java String
À propos des modificateurs d'accès Java
À propos de l'encapsulation et de l'héritage
À propos des expressions Java lambda
À propos des points d'entrée Java
Prise en charge de Java 10 Docker
Résumé personnel sur Java
Tout sur la programmation Java
[Java] Mémo d'héritage implicite
Mémo d'apprentissage Java (héritage)
À propos de la classe abstraite de Java
Remarques sur Java GC
Résumé d'héritage avancé, interface -java
Ce que j'ai recherché sur Java 8
À propos des instances Java
Héritage de l'interface de l'historique d'apprentissage JAVA
Ce que j'ai recherché sur Java 6
Héritage
[Gradle] À propos des tâches du plug-in Java
Héritage
Ce que j'ai recherché sur Java 9
À propos des types de chargeur de classe Java
[Java Silver] À propos de la méthode equals