À propos du polymorphisme Java Super ()

J'ai examiné à nouveau le polymorphisme, donc je vais le résumer Cette fois, je veux approfondir et comprendre super ()

** Cible **

super () est le constructeur de la classe parent

** Conclusion **

Je vais l'essayer avec un exemple concret

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.

Commentaire

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.

Ajouter un argument

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

À propos du polymorphisme Java Super ()
[Java] Polymorphisme
À propos du polymorphisme
java (polymorphisme)
À propos de l'interface Java
[Java] À propos des fonctionnalités de Java 12
[Java] À propos des tableaux
Quelque chose à propos de java
À propos des fonctionnalités Java
À propos des threads Java
Interface [Java]
À propos de la classe Java
À propos des tableaux Java
À propos de l'héritage 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, à propos d'un tableau à deux dimensions
À propos de [Java] [StreamAPI] allMatch ()
À propos de la classe Java StringBuilder
[Java] À propos de la classe Singleton
À 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
java (mérites du polymorphisme)
À propos de l'héritage (Java Silver)
À propos de la classe Java String
À propos des modificateurs d'accès Java
À 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
À propos de la classe abstraite de Java
Remarques sur Java GC
Ce que j'ai recherché sur Java 8
À propos des instances Java
Ce que j'ai recherché sur Java 6
[Gradle] À propos des tâches du plug-in Java
À propos des instructions de déclaration de variable Java
Ce que j'ai recherché sur Java 9
[Java] À propos de la gestion des exceptions try-catch
À propos des types de chargeur de classe Java
[Java Silver] À propos de la méthode equals
[Java] À propos de String et StringBuilder
Ce que j'ai recherché sur Java 7
À propos des directives de codage Java d'Alibaba
Méthode de classe variable de classe Java
À propos du package Java et de l'importation
À propos de la classe abstraite Java
[Android / Java] En savoir plus sur DataBinding
Ce que j'ai recherché sur Java 5
À propos des méthodes Java statiques et non statiques
[Introduction à Java] À propos des expressions lambda