Dieser Artikel beschreibt die dynamische Methodenplanung von Java. Teilen Sie es für Ihre Referenz wie folgt weiter:
Dynamische Methodenplanung:
1. Zugriff auf eine nicht statische Methode einer referenzierten Variablen und bindet die Methode des tatsächlichen referenzierten Objekts zur Laufzeit.
2. Zugriff auf eine statische Methode einer referenzierten Variablen, die zur Laufzeit an die deklarierte Klassenmethode gebunden ist.
3.. Greifen Sie auf die Mitgliedsvariablen einer referenzierten Variablen (einschließlich statischer Variablen und Instanzvariablen) zu und binden Sie die Elementvariablen der deklarierten Klasse zur Laufzeit.
Punkt 3: Besondere Aufmerksamkeit, ich habe es noch nie bemerkt
1. Nichtstatische Methoden:
public class Person {public String Name; public void getInfo () {System.out.println ("Elternklasse"); }} public class Student erweitert Person {public void getInfo () {// Methode übertrieben Super.getInfo (); // rufen Sie das übergeordnete Klassenmethode system.out.println auf ("Subklasse");} public static void main (String [] args) {Person s = new student (); Person t = neue Person (); s = t; // Der Objekttyp von S ist die übergeordnete Klasse, dh Personenklasse S.GetInfo ();}}Das Ergebnis des Laufs ist: Elternklasse
2. Statische Methode:
public class Person {public String Name; public static void getInfo () {System.out.println ("Elternklasse"); }} public class Student erweitert Person {publics static void getInfo () {// Methode Override System.out.println ("Unterklasse");} public static void main (String [] args) {Person s = new student (); S.GetInfo (); // äquivalent zu Person.getInfo ();}}Das Ergebnis des Laufs ist: Elternklasse
3.. Mitgliedsvariablen
öffentliche Klasse Erson {public String name = "Vater"; public void getInfo () {System.out.println ("Elternklasse"); }} public class Student erweitert Person {public String name = "Son"; public void getInfo () {// Methode übertrieben Super.getInfo (); // Rufen Sie das übergeordnete Klassenmethode system.out.println ("Subklasse");} public static void main (String [] args) {Person s = new Student (); Person t = new Person (); s = t; System.out.println (S.Name);}}}}}}}}Auslaufergebnis: Fanher
Gleiches gilt für die Änderung von Mitgliedervariablen in statische Typen
Darüber hinaus für die folgenden zwei Variablen
Studenten = neuer Schüler (); Person t = neuer Schüler ();
Es gibt jedoch tatsächlich einen Unterschied zwischen den beiden. Wenn der Unterklassenschüler beispielsweise eine eigene personalisierte Methode (nicht in der Elternklasse) hat, gibt es eine Methode
public Goschool () {}Dann können nur S diese GoSchool -Methode nennen
t kann nicht genannt werden
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.