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(){
}
}
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. ⭕️
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()};
Tiernamen und frisst auch Hunde. Mit anderen Worten, die Funktion der übergeordneten Klasse ist unsichtbar, hat aber auch die untergeordnete Klasse.
Sie können die geerbte Methode überschreiben. Dadurch kann dieselbe Methode unterschiedliche Funktionen haben. Die Argumente müssen jedoch ausgerichtet sein.
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
Wenn final hinzugefügt wird, kann die Methode nicht überschrieben werden. Es wird verwendet, wenn Sie den Prozess nicht ohne Erlaubnis ändern möchten.
class Tuna extends Animal, Fish
Das Obige versucht, Tiere und Fische an Thunfisch zu erben, kann es aber nicht ❌
[* 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