Java - Novato Java Basico

 
Vista:

Novato Java Basico

Publicado por MANUEL (1 intervención) el 29/08/2004 11:40:48
Estoy iniciándome en Java. Alguien podría explicarme el siguiente código? Cómo funciona?. Y la explicación de la salida. Muchas gracias:

class A {
static void f() {
System.out.println(“A”);
}
void g() {
this.f();
}
}
class B extends A {
static void f() {
System.out.println(“B”);
}
}
class C {
public static void main(String[] args) {
A a = new B();
a.g();
a.f();
}
}
__________
SALIDA:
A
A
__________

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

RE:Novato Java Basico

Publicado por Yamil Bracho (2315 intervenciones) el 29/08/2004 23:18:35
Loq ue pasa es que la variable a sigue siendo A y no B como se pensaria segun la definicion. EL secreto esta en que el tipo de a es A a persar de que se este llamando el constructor de la clase para crear el objeto. Para ser mas explicito supongamos que tenemos la clase Tigre que desciende de la clase mamifero. Si decimos

MamiferoTigre = new Tigre() lo que estamos creando relamente es un mamifero porque el Tigre tambien es Mamifero pero estamos acotando la definicion de tigre a la declaracion.

Esto lo puedes probar facilmente si crear un metodo, digamos d para la clase B y trata de llamarla desde el main. Veras que no te lo permite porque A no tiene ese metodo.

Espero haberme explicado bien... :-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar