Este artigo discute um conceito básico no campo de campo conceitual orientado a objetos Java (variáveis de membros ocultos)
Antes de discutir esse problema, vejamos um código muito simples. Qual é o resultado dos dados do método?
/*** @Author Hollis 17/9/27. */ public class FieldSoverriding {public static void main (string [] args) {sub c1 = new sub (); System.out.println ("c1.s:" + c1.s); System.out.println ("c1.s:" + c1.s); System.out.println ("C1.Say:" + C1.Say ()); Super c2 = novo sub (); System.out.println ("c2.s:" + c2.s); System.out.println ("c2.s:" + c2.s); }} classe super {string s = "super"; String diz () {return "hello super"; }} classe Sub estende super {string s = "sub"; String diz () {return "hello sub"; }}Resultado da saída:
C1.S: sub C1.Say: Hello Sub C2.S: Super C2.Say: Hello Sub
É o mesmo que você pensa? Se for o mesmo, você não precisa continuar lendo. Porque isso não é difícil, apenas saiba.
Reescreva em Java
Em uma profunda compreensão da reescrita e sobrecarga em Java, introduzimos:
No caso em que existem dois métodos com o mesmo nome e lista de parâmetros na subclasse de Java e na classe pai. Como eles têm a mesma assinatura do método, novos métodos na subclasse substituirão os métodos originais na classe pai.
Anteriormente, porque Java tem métodos de reescrita em herança, isso também reflete o polimorfismo dinâmico de Java.
As variáveis de membros podem ser reescritas em Java?
A introdução de reescrita Java acima afirma claramente que a reescrita se refere ao método. As variáveis de membros não são mencionadas. Através do exemplo acima, podemos realmente descobrir que as variáveis de membros não foram reescritas.
Portanto, em Java, as variáveis de membros não serão reescritas. Aqui está outra palavra: esconder.
Escondendo variáveis de membros em java
Definição de domínios ocultos na documentação Java:
Dentro de uma classe, um campo que tem o mesmo nome como um campo na superclasse esconde o campo da superclasse, mesmo que seus tipos sejam diferentes. Dentro da subclasse, o campo na superclasse não pode ser referenciado por seu nome simples. Em vez disso, o campo deve ser acessado através do super. De um modo geral, não recomendamos esconder os campos, pois dificulta a leitura do código.
Traduzido para o chinês:
Em uma classe, se as variáveis do membro na subclasse tiverem o mesmo nome que as variáveis do membro na classe pai, mesmo que tenham tipos diferentes, eles só têm o mesmo nome. As variáveis de membros na classe pai estão ocultas. Nas subclasses, as variáveis de membros da classe pai não podem ser acessadas simplesmente por referência. Em vez disso, as variáveis de membro ocultas pela classe pai devem ser obtidas da referência à classe pai. De um modo geral, não recomendamos ocultar variáveis de membros, pois isso dificulta a leitura do código.
De fato, basta colocar, a subclasse não substituirá as variáveis do membro que substituem a classe pai, de modo que o acesso às variáveis de membro não pode ser acessado usando métodos semelhantes ao polimorfismo.
Como acessar variáveis de membros ocultos
De fato, através dos exemplos anteriores e da introdução às variáveis de membros agora, você já sabia como acessar variáveis de membros ocultos. É usar a referência da classe pai para acessar variáveis de membros, como Super c2 = new Sub(); System.out.println(" c2.s : " + c2.s);。 Ou use System.out.println(((Super)c1).s); .
Resumir
O exposto acima é a reescrita de métodos em Java e o esconderijo de variáveis de membros apresentadas a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!