Lors de la programmation en Java, messages d'avertissement obscures peuvent apparaître lors de la compilation . Déterminer la source de ces erreurs peut devenir un problème si vous n'êtes pas au courant du contexte de l'erreur ou la façon de l'aborder . Dans le cas de la manipulation des symboles, des programmes Java qui utilisent des objets et de l'héritage peuvent présenter une situation de débogage difficile. Cependant, il est important de se rappeler les règles de l'héritage de classe en Java, de sorte qu'une erreur comme un "symbole ne peut être trouvée " peut être tracée de manière efficace. Le «Impossible de trouver Symbol" Erreur
Lors de l'exécution d'un programme Java , le programme est d'abord compilé en code octet . Concrètement, cela signifie que le compilateur vérifie toutes les variables , les méthodes et les objets déclarés dans le code et crée une sorte de référence pour les noms de variables ou de la méthode . Ces noms , ou " symboles" représentent l'emplacement en mémoire de la variable, objet ou méthode. Si vous le programmeur tente d'utiliser une variable ou d'une méthode sans avoir d'abord la déclarer, le compilateur donnera un "ne peut pas trouver le symbole " erreur indiquant qu'une variable ou une méthode sous le nom fourni n'existe pas.
< Br > Classes Java et l'héritage
Comment symboles sont définis devient un peu plus de nuances quand on parle de l'héritage de classe Java. Lorsque vous créez des objets Java , vous pouvez obtenir ces objets des autres classes qui existent déjà . Ce faisant, la classe dérivée " hérite " les méthodes et les variables de la classe de base . En cas de succession , une méthode ou une variable déclarée dans une classe de base est directement référencée à partir de la classe qui hérite , ce qui signifie ces symboles sont disponibles dans la classe dérivée .
Constructeurs Java et héritage
Une méthode particulière dans toutes les classes , issus ou non, est le constructeur . Le constructeur «par défaut» alloue de la mémoire pour un objet lorsque vous instancier dans votre programme. Cependant, vous pouvez créer un constructeur personnalisé pour initialiser les valeurs des variables ou exécuter d'autres sous-programmes quand un objet est créé. Lors de la création d'un constructeur personnalisé pour une classe dérivée d'une autre classe , cependant, vous devez appeler explicitement le constructeur de la classe de base .
Méthode symboles et le mot clé "Super"
le constructeur illustre un aspect important de classes: souvent , les méthodes d'une classe dérivée " remplacent " les méthodes de la classe de base en utilisant le même nom de méthode pour définir de nouvelles fonctionnalités. Cependant, comme dans le cas du constructeur, la méthode de la classe dérivée doit appeler la méthode de la classe de base pour une raison quelconque . Si vous essayez d' appeler directement la méthode de la classe de base , vous recevrez un message d'erreur " symbole ne peut pas être trouvé" . Par exemple, la substitution de la méthode "out" d'une classe de base peut être fait, mais vous ne pouvez pas appeler la version de classe de base de "out" directement . Au lieu de cela , vous devez utiliser le mot-clé "super" pour faire l'appel , comme l'illustre cet exemple :
classe { returnNum public void (int x ) {return x ;}} X
de classe Y s'étend X { returnNum public void () {int z = super ( 5); //appelle la methodreturn " returnNum " de classe X z * z ;}}