Este artículo discute un concepto básico en Java Oculting Campo Oculting Ocult (Variables de miembros ocultos)
Antes de discutir este tema, veamos un código muy simple. ¿Cuál es el resultado de datos del método?
/*** @author Hollis 17/9/27. */ public class FieldOverriding {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 = new Sub (); System.out.println ("C2.S:" + C2.S); System.out.println ("C2.S:" + C2.S); }} clase Super {String S = "Super"; String dice () {return "Hello Super"; }} Class Sub extiende Super {String S = "Sub"; String dice () {return "Hello sub"; }}Resultado de salida:
C1.S: Sub C1.say: Hola Sub C2.S: Super C2.Say: Hola Sub
¿Es lo mismo que piensas? Si es lo mismo, entonces no tienes que continuar leyendo. Porque esto no es difícil, solo sélo.
Reescribir en Java
En una comprensión profunda de reescribir y sobrecargar en Java, hemos presentado:
En el caso de que hay dos métodos con el mismo nombre y lista de parámetros en la subclase de Java y la clase principal. Dado que tienen la misma firma de método, los nuevos métodos en la subclase anularán los métodos originales en la clase principal.
Anteriormente porque Java tiene métodos de reescritura en la herencia, esto también refleja el polimorfismo dinámico de Java.
¿Se pueden reescribir las variables de los miembros en Java?
La introducción de reescritura de Java anterior establece claramente que la reescritura se refiere al método. No se mencionan las variables miembros. A través del ejemplo anterior, en realidad podemos encontrar que las variables de los miembros no han sido reescritas.
Por lo tanto, en Java, las variables miembros no se reescribirán. Aquí hay otra palabra: esconderse.
Ocultación de variables miembros en Java
Definición de dominios ocultos en la documentación de Java:
Dentro de una clase, un campo que tiene el mismo nombre que un campo en la superclase oculta el campo de la superclase, incluso si sus tipos son diferentes. Dentro de la subclase, el campo en la superclase no puede ser referenciado por su simple nombre. En cambio, se debe acceder al campo a través de Super. En términos generales, no recomendamos ocultar campos, ya que hace que el código sea difícil de leer.
Traducido al chino:
En una clase, si las variables de los miembros en la subclase tienen el mismo nombre que las variables del miembro en la clase principal, entonces, incluso si tienen diferentes tipos, solo tienen el mismo nombre. Las variables miembros en la clase principal están ocultas. En las subclases, no se puede acceder a las variables miembros de la clase principal simplemente por referencia. En cambio, las variables miembros ocultas por la clase principal deben obtenerse de la referencia a la clase principal. En términos generales, no recomendamos esconder las variables de los miembros porque esto dificultará la lectura del código.
De hecho, en pocas palabras, la subclase no sobrescribirá las variables miembros que sobrescriben la clase principal, por lo que no se puede acceder al acceso a las variables de los miembros utilizando el polimorfismo como los métodos.
Cómo acceder a las variables de los miembros ocultos
De hecho, a través de los ejemplos anteriores y la introducción a las variables de los miembros en este momento, ya ha sabido cómo acceder a las variables de los miembros ocultos. Es utilizar la referencia de la clase principal para acceder a las variables de los miembros, como Super c2 = new Sub(); System.out.println(" c2.s : " + c2.s);。 O use System.out.println(((Super)c1).s); .
Resumir
Lo anterior es la reescritura de los métodos en Java y la ocultación de las variables miembros presentadas por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!