El niño no puede ocultar un campo de un método en la clase principal simplemente declarando su propia versión del campo. Está aplicando la idea de "ocultamiento de datos" al revés. El niño nunca puede ocultar campos del padre, pero el padre puede ocultar los campos del niño (declarando x
como private
). Si quisiera, podría use encapsulation to achieve your desired effect, como:
class Parent{
private int x=10;
public int getX() {
return x;
}
void show(){
System.out.println(this.getX());
}
}
class Child extends Parent{
int x=20;
@Override
public int getX() {
return x;
}
public static void main(String[] args){
Child c=new Child();
c.show();
}
}
reemplazando el método getX()
de acceso, el niño puede ocultar el valor de la matriz de x
del resto del mundo.
Algunos otros puntos vale la pena discutir:
Lo que sé es que cada vez que estamos extendiendo una clase de su matriz clase miembro de funciones y datos miembros están disponibles para la clase del niño
Esto no es del todo correcto. Los métodos privados y los miembros de datos no estarán (directamente) disponibles para la clase infantil. Solo los campos y métodos públicos, protegidos y de "nivel de paquete" serán directamente accesibles para la clase secundaria.
Además, quiero saber que cuando creamos un objeto de clase A de Child sus Padres clase de datos son miembros se ponen en la sección de Padres de Niños clase objeto en el montón, pero lo que sucede a miembros de la funciones?
Las funciones de miembro no se crean por instancia. Sería terriblemente ineficiente si la JVM funcionara así.En cambio, las implementaciones de métodos para una clase dada se definen solo una vez, como parte del Permanent Generation
que contiene cosas como las definiciones de clases y otros estados internos de JVM. Todas las instancias de una clase determinada compartirán las mismas definiciones de método.
En el caso de una clase secundaria, compartirá las definiciones de método de su elemento primario, y también tendrá sus propias definiciones agregadas para cualquier método que exista solo en el elemento secundario (y para cualquier método que sobrescriba).
+1 Puntos interesantes. – Mahesh