Cet article décrit la planification dynamique de la méthode de Java. Partagez-le pour votre référence, comme suit:
Planification de méthode dynamique:
1. Accédez à une méthode non statique d'une variable référencée et lie la méthode de l'objet réel réel à l'exécution.
2. Accédez à une méthode statique d'une variable référencée, qui est liée à la méthode de classe déclarée lors de l'exécution.
3. Accédez aux variables membre d'une variable référencée (y compris les variables statiques et les variables d'instance), et lier les variables membre de la classe déclarée lors de l'exécution.
Point 3: Portez une attention particulière, je ne l'ai jamais remarqué auparavant
1. Méthodes non statiques:
Personne de classe publique {nom de chaîne publique; public void getInfo () {System.out.println ("classe parent"); }} classe publique Student étend la personne {public void getInfo () {// Méthode Override super.getInfo (); // Appelez la méthode de la classe parent System.out.println ("sous-classe");} public static void main (String [] args) {personne s = new student (); Personne t = new personne (); s = t; // Le type d'objet de S est la classe parent, c'est-à-dire la classe de personne s.getInfo ();}}Le résultat de la course est: classe parent
2. Méthode statique:
Personne de classe publique {nom de chaîne publique; public static void getInfo () {System.out.println ("classe parent"); }} classe publique Student étend la personne {publique statique void getInfo () {// Méthode Override System.out.println ("Subclass");} public static void main (String [] args) {personne s = new Student (); s.getInfo (); // équivalent à personne.getInfo ();}}Le résultat de la course est: classe parent
3. Variables des membres
classe publique erson {public string name = "père"; public void getInfo () {System.out.println ("classe parent"); }} classe publique Student étend la personne {public String name = "Son"; public void getInfo () {// Méthode Override super.getInfo (); // Appelez la méthode de la classe parent system.out.println ("sous-classe");} public static void main (String [] args) {personne s = new student (); personne t = new personne (); s = t; system.out.println (s.name);}}Résultat de course: Fanher
Il en va de même pour changer les variables des membres en types statiques
De plus, pour les deux variables suivantes
Étudiants = nouveau étudiant (); personne t = new étudiant ();
Cependant, il y a en fait une différence entre les deux. Lorsque l'élève de sous-classe a sa propre méthode personnalisée (pas dans la classe parentale), par exemple, il existe une méthode
public goschool () {}Alors seuls peut appeler cette méthode goschool
t ne peut pas être appelé
J'espère que cet article sera utile à la programmation Java de tous.