tengo una clase, Super
:¿Cuáles son las reglas que dictan la herencia de variables estáticas en Java?
public class Super {
public static String foo = "foo";
}
También tengo otra clase, que se extiende Sub
Super
:
public class Sub extends Super {
static {
foo = "bar";
}
public static void main (String[] args) {
System.out.println(Super.foo);
}
}
Cuando lo ejecuto, imprime bar
.
Mi tercer (y último) clase es Testing
:
public class Testing {
public static void main (String[] args) {
System.out.println(Super.foo);
System.out.println(Sub.foo);
System.out.println(Super.foo);
}
}
Esta impresora:
foo
foo
foo
No entiendo por qué el contenido de foo
varían dependiendo de la clase en la que está accediendo a ella desde . ¿Alguien puede explicar?
Lo que quise decir con esa afirmación es que cuando accedo a 'Testing' me devuelve algo diferente que cuando accedo a él desde' Sub'. – jmgrosen
'@jmgrosen:' Ah, contigo ahora. –
FWIW, tenga en cuenta la importante distinción entre lo que tiene arriba y lo que tendría si 'Sub' contenía' static static String foo = "bar"; '(con lo cual obtiene" foo "," bar "," foo "como usted probablemente espera). –