Estoy estudiando la función de miembro de JAVA y pensé en experimentar con las variables de miembro primordiales.Anulando las variables de miembro en Java
Por lo tanto, he definido clases
public class A{
public int intVal = 1;
public void identifyClass()
{
System.out.println("I am class A");
}
}
public class B extends A
{
public int intVal = 2;
public void identifyClass()
{
System.out.println("I am class B");
}
}
public class mainClass
{
public static void main(String [] args)
{
A a = new A();
B b = new B();
A aRef;
aRef = a;
System.out.println(aRef.intVal);
aRef.identifyClass();
aRef = b;
System.out.println(aRef.intVal);
aRef.identifyClass();
}
}
la salida es:
1
I am class A
1
I am class B
no soy capaz de entender por qué cuando Aref está ajustado en b intval sigue siendo de la clase A?
posible duplicado de [Ligera confusión con respecto a la anulación donde las variables se refieren] (http://stackoverflow.com/questions/12589274/slight-confusion-regarding-overriding-where-variables-are-concerned) –
Creo esta no es la misma pregunta, ya que la otra mezcla varias características del lenguaje, mientras que esta es puramente sobre variables que no son polimórficas –
@Vic Seedoubleyew Pero me parece como un duplicado de [esta pregunta] (http: // stackoverflow.com/q/7794621/1303323) –