Cantidad Rahul:
He intentado acceder al miembro de datos de un estudiante de clase a través de la referencia de la clase 'Objeto' (que es una clase base de todas las clases en Java), pero, el compilador genera un error en tiempo de compilación.
código :
class Student {
String name;
int roll;
public Student(String name, int roll) {
this.name = name;
this.roll = roll;
}
}
class Main {
public static void main(String[] args) {
Object ob[] = new Object[4];
Student s = new Student("Yash", 88);
ob[0] = s;
System.out.println(s.name);
System.out.println(ob[0].name);
}
}
Output (Error en tiempo de compilación) :
Main.java:19: error: cannot find symbol
System.out.println(ob[0].name);
^
symbol: variable name
location: class Object
1 error
compiler exit status 1
Tanto, la instancia, así como el puntero pertenecen a una misma clase:
System.out.println(s.getClass());
System.out.println(ob[0].getClass());
Salida:
class Student
class Student
Rigo Sarmiento :
tldr; No obstante, deberá para su emisión:
System.out.println(((Student)ob[0]).name);
Cuando estaba tratando ob[0].name
que estaba viendo antes de tiempo de compilación. Dado que no se ha compilado, el compilador no sabe todavía que es de tipo Student
. Pero después de la compilación, la variable tiempo de ejecución cambia cuando se llama ob[0]=s
, que es por ob[0].getclass()
obras.