Este artículo describe la programación de métodos dinámicos de Java. Compártelo para su referencia, como sigue:
Programación de métodos dinámicos:
1. Acceda a un método no estático de una variable referenciada y vincula el método del objeto referenciado real en tiempo de ejecución.
2. Acceda a un método estático de una variable referenciada, que está vinculada al método de clase declarado en tiempo de ejecución.
3. Acceda a las variables miembros de una variable referenciada (incluidas las variables estáticas y las variables de instancia), y vincule las variables del miembro de la clase declarada en tiempo de ejecución.
Punto 3: Presta atención especial, nunca lo he notado antes
1. Métodos no estáticos:
Persona de clase pública {nombre de cadena pública; public void getInfo () {System.out.println ("clase principal"); }} El estudiante de clase pública extiende a la persona {public void getInfo () {// método anular super.getInfo (); // llame al método de clase principal System.out.println ("subclase");} public static void main (string [] args) {persona s = nuevo estudiante (); Persona t = nueva persona (); s = t; // El tipo de objeto de S es la clase principal, es decir, clase de persona s.getInfo ();}}El resultado de la ejecución es: clase de padres
2. Método estático:
Persona de clase pública {nombre de cadena pública; public static void getInfo () {System.out.println ("clase principal"); }} El estudiante de clase pública extiende la persona {Publics estático void getInfo () {// Method anular System.out.println ("subclass");} public static void main (string [] args) {persona s = nuevo estudiante (); s.getInfo (); // equivalente a persona.getInfo ();}}El resultado de la ejecución es: clase de padres
3. Variables de miembros
clase pública ERERSON {public String name = "Padre"; public void getInfo () {System.out.println ("clase principal"); }} El estudiante de clase pública extiende a la persona {public String name = "son"; public void getInfo () {// método anular super.getInfo (); // llame al método de clase principal System.out.println ("subclase");} public static void main (string [] args) {persona s = nuevo estudiante (); persona t = nueva persona (); s = t; system.out.println (s.name);}}}}}Resultado de ejecución: fanther
Lo mismo es cierto para cambiar las variables de los miembros a los tipos estáticos.
Además, para las siguientes dos variables
Estudiantes = nuevo estudiante (); persona t = nuevo estudiante ();
Sin embargo, en realidad hay una diferencia entre los dos. Cuando el estudiante de subclase tiene su propio método personalizado (no en la clase principal), por ejemplo, hay un método
public goschool () {}Entonces solo S puede llamar a este método de goschool
no se puede llamar
Espero que este artículo sea útil para la programación Java de todos.