Ayuda con Polimorfismo
public class A {
int i = 10;
public void printValue() {
System.out.println("Value-A");
}
}
public class B extends A{
int i = 12;
public void printValue() {
System.out.print("Value-B");
}
}
public class Test{
public static void main(String argv[]){
A a = new B();
a.printValue();
System.out.println(a.i);
}
}
Señores al final esto pinta Value-b 10
pero porque ??
entiendo porque pinta value-B por lo de polimorfismo, pero porque no pinta tambien el 12 de la clase b ??
Esto quiere decir que en los caso donde hacemos A a = new B () accede a los metodos de la clase hijo pero a los argumentos de a clase padre ???
Haber quien me puede orientar gracias
- Inicie sesión o regístrese para enviar comentarios
Consejo: Siempre DEBES poner
Consejo: Siempre DEBES poner tu codigo entre <code> y </code>
Ok, todo claro, tu estas manejando un objeto de tipo A y estas heredando la funcionalidad de B cuando haces el DownCast pero las propiedades de A siguen siendo las de A...
Para tener acceso directamente a laspropiedades de B, tendras que usar el objeto B
de esta manera cuando hagas
println(b.i)
tendras el valor de la propiedad i de la clase BSobreescritura
Se puede hacer sobreescritura (override) de métodos, pero no de variables de instancia. Si modificas tu código para que salga así:
B b = new B();
a.printValue();
System.out.println();
System.out.println(a.i);
b.printValue();
System.out.println();
System.out.println(b.i);
System.out.println(((A)b).i);
Eso te imprime
Muchas Grax
Es la pregunta de un examen de simulacion de java
jejeje
pero si me confundio grax
Claro, ahi la bronca es si
Claro, ahi la bronca es si @ramiro.rosales quiere acceder directamente al metodo de A aunqe se haya sobreescrito en B, ejemplo, si se pudiera hacer esto segun yo seria algo asi:
donde en quiero decir que del objeto a quiero traer la clase padre y de él ejecutar el metodo printValue() ... no pos no es valido eso (directamente)!