Prefácio
O código estático tem precedência sobre o código não estático, porque os membros modificados pela estática são todos os membros da classe e serão executados à medida que a JVM carrega a classe. Os membros não modificados pela estática também são chamados de membros da instância. Os objetos são necessários para serem criados antes que possam ser carregados na memória da heap. Portanto, a estática será preferida para não estática.
Ao executar o construtor (método de construção), existem três etapas implícitas antes de executar o corpo do método:
1. A Super Declaração pode ter as três situações a seguir:
1) A primeira linha do construtor é esta afirmação e as três etapas implícitas não serão executadas.
2) A primeira linha do corpo do construtor é uma super declaração, e o construtor da classe pai correspondente é chamado.
3) A primeira linha do corpo do construtor não é essa afirmação nem uma afirmação super, e Super () é chamado implicitamente, ou seja, o construtor padrão de sua classe pai, e é por isso que uma classe pai geralmente precisa fornecer um construtor padrão;
2. Inicialize variáveis não estáticas;
3. Construa o bloco de código.
A partir disso, podemos ver que o bloco de código de construção tem precedência sobre o corpo do método do método de construção, mas essa palavra -chave e a super palavra -chave não podem aparecer ao mesmo tempo e só podem estar na primeira linha do código. Se essa palavra -chave aparecer, as três etapas implícitas não serão executadas.
Primeiro veja as aulas a seguir e depois julgue sua produção:
classe pública A {static {System.out.print (1); } public a () {System.out.print (2); }} public classe B estende um {static {System.out.print ("A"); } public b () {System.out.print ("b"); }} public class C {public static void main (string [] args) {a a = new b (); a = novo b (); }} A ordem de execução da classe dos pais e da classe infantil
Características de execução de variáveis estáticas
Notas sobre substituição do método
1. Quando as classes de pais e filhos têm blocos e construtores de código estático, a ordem de execução é a seguinte:
Bloco de código estático da classe pai> Bloco de código estático da subclasse
Construtor da classe pai> Construtor de subclasse (primeiro há um pai, depois há uma criança)
Se for uma relação de herança de vários níveis, a classe pai no nível mais alto será executada primeiro e depois decrescente por sua vez.
Resumo: Execução estática é preferida, a execução da classe pai é preferida
Nota: Os blocos de código estático são executados quando a JVM carrega a classe e os blocos de código estático são executados apenas uma vez.
2. Ao ligar para um método em uma classe, antes de executar o corpo do método, as variáveis do membro na classe devem ser atribuídas primeiro. Se nenhum valor específico for atribuído no código, também haverá um valor padrão. A ordem de atribuição das variáveis de membro é realizada na ordem antes e depois.
Se houver tarefas diretas e tarefas de construtor, execute -as em sequência
3. Substitua (substitua) sobrecarga (sobrecarga)
Sobrecarga é o nome do método, o tipo de retorno é o mesmo, a única diferença é que os parâmetros do método são diferentes (diferentes tipos de parâmetros ou diferentes tipos de parâmetros)
Reescrever:
Polimorfismo:
A referência da classe pai aponta para o objeto da subclasse. O método executado quando invocado também é o método da subclasse. O método da classe pai não será executado.
O chamado polimorfismo significa que a referência da classe pai ou tipo de interface pode apontar para uma subclasse ou uma instância (objeto) da classe que implementa a interface.
Depois de ler as instruções acima, você também deve conhecer os resultados da saída do programa acima.
O resultado da saída é: 1A2B2B
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.