Über Java-Vererbung

Erbe

Erben von Variablen und Methoden, die den Inhalt einer Klasse darstellen, an andere Klassen.

Funktionen objektorientierter Programmiersprachen wie Java, Ruby und Python

Die ursprüngliche Klasse ist die übergeordnete Klasse (Superklasse / Basisklasse). Die geerbte Klasse ist eine untergeordnete Klasse (Unterklasse / abgeleitete Klasse)

--- Bild der Vererbung ---

Tier (Elternklasse) Variable · Name · Alter Methode · Essen · Gehen

↓↓

Hund (Kinderklasse) Zusätzliche Methoden ・ Rinde (bellt) · Lauf

Mensch (Kinderklasse) Zusätzliche Methoden · Sich unterhalten · Arbeit


Wie in der Abbildung oben gezeigt, ** Erstellen Sie mehrere Klassen mit gemeinsamen Elementen und Eigenschaften ** Verwenden Sie manchmal Vererbung.


//Tierklasse als Elternklasse
public class Animal{
  public String name;  //Name
  public int age; //Alter
  public void eat(String something) {
      //Essen
     System.out.println(something + "ich aß");
  }
  public void walk(int a){ 
     //gehen
     System.out.println(a.toString(); + "Ich ging einen Meter");
  }
}


//Hundeklasse erstellt durch Erben der Tierklasse
public class Dog extends Animal {
  //Rinde
  public void bark(){
    System.out.println("einer");
  }
 //Lauf
 public void run() {
 }
}

//Menschliche Klasse, die durch das Erben der Tierklasse geschaffen wurde
public class Human extends Animal {
  //Geschwätz
 public void talk(String tk){
   System.out.println("「" + tk + "」");
 }
 //Ich mache die Arbeit
 public void work(){
 }
}

Vorteile der Vererbung

1. Die Anzahl der Programmierzeilen wird reduziert und Arbeit kann gespart werden.

Wenn Sie keine Vererbung verwenden

//Hundeklasse gemacht ohne Tierklasse zu erben
public class Dog {
  public String name;  //Name
  public int age;//Alter

  public void eat(String something) {
      //Essen
      System.out.println(something + "ich aß");
  }
  public void walk(int a){ 
     //gehen
     System.out.println(a.toString(); + "Ich ging einen Meter");
  }
  //Rinde
  public void bark(){
    System.out.println("einer");
  }
 //Lauf
 public void run() {
 }
}

//Menschliche Klasse geschaffen, ohne Tierklasse zu erben
public class Human extends Animal {
  public String name;  //Name
  public int age;//Alter

 public void eat(String something) {
      //Essen
      System.out.println(something + "ich aß");
  }
  public void walk(int a){ 
     //gehen
     System.out.println(a.toString(); + "Ich ging einen Meter");
  }

  //Geschwätz
 public void talk(String tk){
   System.out.println("「" + tk + "」");
 }
 //Ich mache die Arbeit
 public void work(){
 }
}

Die Variablen und Methoden der übergeordneten Klasse werden in beiden untergeordneten Klassen dupliziert. ❌ Wenn Sie die übergeordnete Klasse ändern möchten, müssen Sie sie außerdem an zwei Stellen ändern. ❌ Wenn die übergeordneten Klassen zusammengefasst sind, ist nur eine Änderung erforderlich. ⭕️

2. Klassen derselben Vererbungsquelle können zusammen behandelt werden

Wenn Sie beispielsweise alle Tiere auf eine Spur setzen möchten, können Sie sie als Variablen behandeln, solange sie dieselbe Tierklasse erben.


//Ein Array, in dem Objekte vom Typ Tierklasse gespeichert werden
Animal[] animals;
//Sowohl Hunde als auch Menschen können zusammengefügt werden
animals = { new Dog(); new Human()};

Vererbungsfunktionen

Sie können die Felder (Variablen, Methoden) der übergeordneten Klasse in der untergeordneten Klasse verwenden.

Tiernamen und frisst auch Hunde. Mit anderen Worten, die Funktion der übergeordneten Klasse ist unsichtbar, hat aber auch die untergeordnete Klasse.

Die untergeordnete Klasse kann die Methode der übergeordneten Klasse überschreiben (überschreiben)

Sie können die geerbte Methode überschreiben. Dadurch kann dieselbe Methode unterschiedliche Funktionen haben. Die Argumente müssen jedoch ausgerichtet sein.

Vererbung kann vererbt werden (Enkelklasse)

Sie können eine Enkelklasse mit einer Kinderklasse als Eltern erstellen.


public class Animal {

}

public class Dog extends Animal {

}

pubic class WhiteDog extends Dog {
  public String color = "white";
}

Das obige schafft einen weißen Hund als Enkelklasse

Hinweise zur Vererbung

Überschreiben Sie keine Felder, die final für die übergeordnete Klasse verwenden

Wenn final hinzugefügt wird, kann die Methode nicht überschrieben werden. Es wird verwendet, wenn Sie den Prozess nicht ohne Erlaubnis ändern möchten.

Es können nicht zwei Klassen gleichzeitig vererbt werden

class Tuna extends Animal, Fish  

Das Obige versucht, Tiere und Fische an Thunfisch zu erben, kann es aber nicht ❌

Der Konstruktor wird nicht vererbt und implizit ausgeführt

[* Was ist ein Konstruktor?](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 & Text =% 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) Eine Methode, die automatisch ausgeführt wird, wenn ein Objekt aus einer Klasse erstellt wird


public Dog extends Animal {
  //Konstrukteur
  Dog(){
  }
}

public Dog extends Animal {
  //Konstrukteur
  Dog(){
    super();
  }
}

Der Code oben und unten hat die gleiche Bedeutung. Wenn Sie versuchen, den Konstruktor in einer untergeordneten Klasse zu überschreiben, wird der Konstruktor der übergeordneten Klasse ebenfalls implizit ausgeführt. Selbst wenn die untergeordnete Klasse keinen Konstruktor hat, wird der Konstruktor der übergeordneten Klasse ausgeführt.

Recommended Posts

Über Java-Vererbung
Informationen zur Vererbung (Java Silver)
Über die Vererbung
[Java] Vererbung
Java-Vererbung
Java-Vererbung
Java (Vererbung)
Über die Java-Schnittstelle
[Java] Informationen zu Java 12-Funktionen
[Java] Klassenvererbung
[Java] Über Arrays
Informationen zur Klassenvererbung.
Etwas über Java
Wo ist mit Java?
Informationen zu Java-Funktionen
Über Java-Threads
Informationen zu Java-Arrays
Über Schnittstelle, Java-Schnittstelle
Über Java Var
Über Java Literal
Informationen zu Java-Befehlen
Informationen zur Java-Protokollausgabe
Informationen zur Java-Funktionsschnittstelle
[Java] Überladen / Überschreiben / Vererbung
Java, über zweidimensionales Array
Über die Klassenteilung (Java)
Über [Java] [StreamAPI] allMatch ()
Informationen zur Java StringBuilder-Klasse
[Java] Über Singleton Class
Fassen Sie die Java-Vererbung zusammen (Java Silver 8)
Informationen zur Bindung von Java-Methoden
[Java] Über anonyme Klassen
Informationen zu Aufteilungsmethoden (Java)
[Java Silver] Informationen zur Initialisierung
Informationen zur Java-Array-Liste
Über Java-Polymorphismus super ()
Informationen zur Java String-Klasse
Informationen zu Java-Zugriffsmodifikatoren
Über Kapselung und Vererbung
Über Java-Lambda-Ausdrücke
Informationen zu Java-Einstiegspunkten
Java 10 Docker-Unterstützung
Persönliche Zusammenfassung über Java
[Java] Implizites Vererbungsprotokoll
Java-Lernnotiz (Vererbung)
Über die abstrakte Klasse von Java
Hinweise zu Java GC
Zusammenfassung der erweiterten Vererbung, Schnittstelle -java
Was ich über Java 8 recherchiert habe
Über Java-Instanzen
Vererbung der JAVA-Lernverlaufsschnittstelle
Was ich über Java 6 recherchiert habe
Erbe
[Gradle] Informationen zu Java-Plug-In-Aufgaben
Erbe
Was ich über Java 9 recherchiert habe
Informationen zu Java Class Loader-Typen
[Java Silver] Über gleich Methode