Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Cómo saber qué instancio cuando instancio clases heredadas?

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

enero 26, 2018 | Registered Commentermauro

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

enero 27, 2018 | Registered Commenterchoces