Este artigo descreve a programação de métodos dinâmicos de Java. Compartilhe -o para sua referência, como segue:
Agendamento de métodos dinâmicos:
1. Acesse um método não estático de uma variável referenciada e liga o método do objeto referenciado real em tempo de execução.
2. Acesse um método estático de uma variável referenciada, que está vinculada ao método de classe declarada em tempo de execução.
3. Acesse as variáveis do membro de uma variável referenciada (incluindo variáveis estáticas e variáveis de instância) e vincule as variáveis de membro da classe declarada em tempo de execução.
Ponto 3: Preste atenção especial, nunca notei isso antes
1. Métodos não estáticos:
public class Pessoa {Nome da String Public; public void getinfo () {System.out.println ("classe pai"); }} classe pública Student estende a pessoa {public void getinfo () {// substitui o método super.getInfo (); // Ligue para o Method System.out.println ("subclasse");} public static void main (string [] args) {pessoa s = new Student (); Pessoa t = nova pessoa (); s = t; // O tipo de objeto de S é a classe pai, ou seja, a classe de pessoa s.getinfo ();}}O resultado da corrida é: classe pai
2. Método estático:
public class Pessoa {Nome da String Public; public static void getinfo () {System.out.println ("classe pai"); }} classe pública Student estende a pessoa {publics static void getinfo () {// substitui o método system.out.println ("subclass");} public static void main (string [] args) {pessoa s = new Student (); s.getinfo (); // equivalente a pessoa.getInfo ();}}O resultado da corrida é: classe pai
3. Variáveis de membros
classe pública ERSON {public String name = "Pai"; public void getinfo () {System.out.println ("classe pai"); }} classe pública Student estende a pessoa {public string name = "filho"; public void getinfo () {// substitui o método super.getInfo (); // Ligue para o Método da classe pai System.out.println ("subclasse");} public static void main (string [] args) {pessoa s = new student (); pessoa t = new pessoa (); s = t; system.out.println (s.name);}}Resultado em execução: fanther
O mesmo vale para mudar as variáveis de membros para tipos estáticos
Além disso, para as duas variáveis a seguir
Estudantes = novo aluno (); pessoa t = new Student ();
No entanto, há realmente uma diferença entre os dois. Quando o aluno da subclasse tem seu próprio método personalizado (não na classe dos pais), por exemplo, existe um método
public Goschool () {}Então, apenas S pode chamar esse método GOSHOOL
t não pode ser chamado
Espero que este artigo seja útil para a programação Java de todos.