miembro de datos de acceso de una clase con referencia de tipo 'Objeto'

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].nameque 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.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=336006&siteId=1
Recomendado
Clasificación