El "problema" se debe a los métodos static, que pertenecen a la clase, no las instancias de la misma: la instancia b es del tipo A, luego se ejecuta el método static de la clase A, y no el de la instancia de la clase B.
https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
Hola. Tengo dos códigos. En ambos hago una instancia de clase y la imprimo con el método main. En el primer caso recibo siempre el contenido de la clase hija. En cambio en el segundo caso imprimo la clase padre. ¿porqué sucede esto?
A.java
public class A {
public void printValue(){
System.out.println("A");
}
}
B.java
public class B extends A {
public void printValue(){
System.out.println("B");
}
}
Test.java
public class Test {
public static void main(String... args) {
A b = new B();
b.printValue();
}
}
...en este caso recibo siempre el contenido de la clase hija, en cambio con
A.java
public class A {
public static void value(String y) {
System.out.println("A");
}
public static void main(String[] args) {
A b = new B();
String x = "B";
b.value(x);
}
}
B.java
public class B extends A{
public static void value(String x) {
System.out.println("B");
}
}
recibo siempre el contenido de la clase padre