J'ai examiné à nouveau le polymorphisme, donc je vais le résumer Cette fois, je veux approfondir et comprendre super ()
** Cible **
** Conclusion **
Je vais l'essayer avec un exemple concret
Person.java
public class Person {
Person() {
System.out.println("Je suis un humain." + );
}
}
Student.java
public class Student extends Person {
Student() {
System.out.println("Je suis étudiant.");
}
}
Main.java
public class Main {
public static void main() {
new Student();
}
}
Je suis un humain.
Je suis étudiant.
Le constructeur de la classe Student n'a pas de description pour afficher "Human". Mais il est affiché. En d'autres termes, le constructeur de la classe Student qui hérite de Person
Person.java
public class Student extends Person {
Student() {
super();
System.out.println("Je suis étudiant.");
}
}
Ça ressemble à ça.
(Ce n'est pas réellement fait, mais si vous l'écrivez explicitement, cela ressemble à ceci. Lorsque vous créez une instance d'une classe héritée, le constructeur de la classe parente est appelé automatiquement)
Ce super () est le constructeur de la classe parent.
Ajoutez ensuite un argument au constructeur de la classe parent
Person.java
public class Person {
private String name;
Person(String name) {
this.name = name;
System.out.println(name + "est.");
}
}
Main.java
public class Main {
public static void main() {
new Student();
}
}
Oui. Il y a une erreur de compilation. Cela est dû au fait que le constructeur de la classe Person demande un argument. Dans ce cas, vous devez appeler super () avec un argument dans la classe Student.
Student.java
public class Student extends Person {
Student(String name) {
super(name);
System.out.println("Je suis étudiant.");
}
}
Main.java
public class Main {
public static void main() {
new Student("Yamada");
}
}
C'est Yamada.
Je suis étudiant.
L'élève hérite de la personne, il a donc également un champ de nom
Main.java
public class Main {
public static void main() {
Student student = new Student("Yamada");
System.out.println(student.name);
}
}
C'est Yamada.
Je suis étudiant.
Yamada
Recommended Posts