Java non trova il simbolo con il metodo Out

April 12

Durante la programmazione in Java, messaggi di avviso oscuri possono essere visualizzati durante la compilazione. Determinare la fonte di questi errori può diventare un problema se non si è a conoscenza del contesto dell'errore o come affrontarlo. Nel caso di movimentazione simbolo, i programmi Java che utilizzano oggetti ed ereditarietà può presentare una situazione di debug difficile. Tuttavia, è importante ricordare le regole di ereditarietà di classe in Java, in modo che un errore come "simbolo non può essere trovato" può essere rintracciato efficace.

L'errore "Impossibile trovare Symbol"

Quando si esegue un programma Java, il programma viene prima compilato in bytecode. In particolare, ciò significa che il compilatore controlla tutte le variabili, metodi e oggetti dichiarati nel codice e crea una sorta di riferimento per i nomi delle variabili o metodo. Questi nomi, o "simboli" rappresentano la posizione in memoria della variabile, un oggetto o un metodo. Se il programmatore tenta di utilizzare una variabile o un metodo senza prima dichiararla, il compilatore darà un errore "non riesce a trovare il simbolo" denota che una variabile o un metodo con il nome fornito non esiste.

Le classi Java e Inheritance

Come vengono definiti i simboli diventa un po 'più sfumature quando si parla di Java di classe ereditarietà. Quando si creano oggetti Java, è possibile derivare questi oggetti di altre classi che già esistono. In tal modo, la classe derivata "eredita" i metodi e le variabili della classe di base. Nel caso di eredità, un metodo o una variabile dichiarata in una classe base è direttamente riferimento dalla classe che eredita, intendendosi per tali simboli sono disponibili nella classe derivanti.

Java Costruttori e Inheritance

Un metodo particolare in tutte le classi, derivato o no, è il costruttore. Il costruttore "default" alloca la memoria per un oggetto quando si istanzia nel vostro programma. Tuttavia, è possibile creare un costruttore personalizzato per inizializzare i valori delle variabili o eseguire altre subroutine quando viene creato un oggetto. Quando si crea un costruttore personalizzato per una classe derivata da un'altra classe, tuttavia, è necessario chiamare in modo esplicito il costruttore della classe base.

Simboli metodo e la parola chiave "Super"

Il costruttore illustra un aspetto importante di classi: spesso, i metodi di una classe "override" derivati ​​i metodi della classe base utilizzando lo stesso nome del metodo per definire nuove funzionalità. Tuttavia, come nel caso del costruttore, il metodo della classe derivata deve richiamare il metodo della classe base per qualche ragione. Se si tenta di chiamare direttamente il metodo della classe base, si riceverà un errore "simbolo non può essere trovato". Ad esempio, sovrascrivendo il metodo del "fuori" di una classe base può essere fatto, ma non si può chiamare la versione della classe base del "fuori" direttamente. Invece, è necessario utilizzare la parola chiave "super" per effettuare la chiamata, in quanto questo esempio illustra:

Classe X {
returnNum public void (int x) {
tornare x;
}
}

Classe Y estende X {
returnNum public void () {
int z = super (5); // Chiama il metodo "returnNum" classe di X
tornare z * z;
}
}