Al programar en Java, mensajes de advertencia oscuros pueden aparecer durante la compilación. Determinar el origen de estos errores puede ser un problema si usted no es consciente del contexto del error o de la forma de abordarlo. En el caso de manipulación de símbolo, programas de Java que utilizan los objetos y la herencia pueden presentar una situación difícil depuración . Sin embargo, es importante recordar las reglas de herencia de clases en Java , por lo que un error como un "símbolo no se puede encontrar " se puede rastrear con eficacia. El "no puede encontrar símbolo"
error cuando
Cuando se ejecuta un programa Java, el programa se compila por primera vez en el código de bytes . En concreto , esto significa que el compilador comprueba todas las variables , los métodos y los objetos declarados en el código y crea una especie de referencia para los nombres de variables o método . Estos nombres , o los " símbolos" representan la ubicación en memoria del , objeto o método variable. Si el programador intenta utilizar una variable o método sin antes declarar que , el compilador dará un "no se puede encontrar el símbolo " error que indica que una variable o método bajo el nombre proporcionado no existe.
< Br > Las clases Java y herencia
Cómo se definen los símbolos se convierte en un poco más matices cuando se habla de herencia de clases Java. Al crear objetos Java , puede derivar estos objetos de otras clases que ya existen. De este modo , la clase derivada " hereda " los métodos y variables de la clase base . En el caso de la herencia, un método o una variable declarada en una clase base se hace referencia directamente a la clase heredada , es decir esos símbolos están disponibles en la clase derivada .
Java Constructores y herencia
Un método particular en todas las clases , derivadas o no, es el constructor. El constructor "default " asigna memoria para un objeto cuando se crean instancias en su programa . Sin embargo, puede crear un constructor personalizado para inicializar los valores de variables o ejecutar otras subrutinas cuando se crea un objeto. Al crear un constructor personalizado para una clase derivada de otra clase, sin embargo, se debe llamar explícitamente al constructor de la clase base.
Método Símbolos y la palabra clave "Super"
el constructor ilustra un aspecto importante de las clases : a menudo , los métodos de una clase derivada " anulan " los métodos de la clase base con el mismo nombre de método para definir una nueva funcionalidad . Sin embargo , como en el caso del constructor , el método de la clase derivada debe invocar el método de la clase base , por alguna razón . Si tratas de llamar directamente al método de la clase base, usted recibirá un error " símbolo no se puede encontrar " . Por ejemplo , reemplazando el método "out" de una clase base se puede hacer, pero no se puede llamar a la versión de la clase base del "out" directamente . En su lugar , debe utilizar la palabra clave "super" para hacer la llamada , como ilustra este ejemplo :
clase
X {void returnNum público ( int x) {return x ;} }
Class Y se extiende X returnNum { public void () { int z = super ( 5 ) //llama methodreturn " returnNum " de la clase X z * z ;} }