Ved programmering i Java, kan obskure advarsler vises under kompilering. Bestemmelse af kilden til disse fejl kan blive et problem, hvis du ikke er klar over rammerne af fejl, eller hvordan at løse det. I tilfælde af symbolet håndtering, kan Java-programmer , der anvender objekter og arv præsentere en vanskelig fejlretning . Men det er vigtigt at huske reglerne for klasse arv i Java , således at en fejl såsom en "symbolet kan ikke fundet" kan spores effektivt. Den " Kan ikke finde Symbol " Fejl
Når du kører en Java-program , er programmet først kompileret ind byte kode. Konkret betyder det, at oversætteren tjekker alle de variabler , metoder og objekter erklæret i koden og skaber en slags reference for de variable eller metode navne. Disse navne , eller " symboler " repræsenterer placeringen i hukommelsen af den variable , genstand eller metode. Hvis du programmøren forsøger at bruge en variabel eller metode uden først at bekendtgøre det, vil compileren giver en "kan ikke finde symbol " fejl angiver , at en variabel eller metode under den medfølgende navnet ikke eksisterer.
< Br > Java Klasser og arv
Hvordan symboler er defineret bliver lidt flere nuancer , når vi taler om Java -klasse arv. Når du opretter Java-objekter , kan du udlede disse objekter fra andre klasser , der allerede eksisterer . Dermed den afledte klasse " arver " de metoder og variabler af basen klassen. I tilfælde af arv , erklærede en metode eller variabel i en base klasse er direkte refereres fra arve klassen , hvilket betyder disse symboler er tilgængelige i afledt klasse.
Java Constructors og Arv < br >
En særlig metode i alle klasser, der stammer eller ej, er konstruktør. "Default" constructor allokerer hukommelse til et objekt, når du instantiere den i dit program. Men du kan oprette en brugerdefineret konstruktør at initialisere variable værdier eller køre andre subrutiner , når et objekt er oprettet. Når du opretter en brugerdefineret konstruktør for en klasse afledt af en anden klasse, dog skal du eksplicit kalder basisklassens konstruktør.
Metode Symboler og " Super" Keyword
konstruktøren illustrerer et vigtigt aspekt af klasser : ofte , metoderne til en afledt class " tilsidesætte " metoderne til basen klassen ved hjælp af den samme metode navn for at definere nye funktioner . Men som i tilfældet af konstruktøren , skal den afledte klasse metode påberåbe sig basisklassens metode eller anden grund . Hvis du prøver og ringe direkte til den metode af basen klassen, vil du modtage en "symbolet kan ikke findes " fejl . For eksempel kan tilsidesætte "out " metode til en base klasse skal gøres, men du kan ikke kalde basisklassen version af " out" direkte. Du skal i stedet bruge " super " søgeord for at foretage opkaldet , som dette eksempel illustrerer : Hej
Klasse X { public void returnNum ( int x ) {return x ;}}
Class Y udvider X { public void returnNum () { int z = super (5 ) //kalder class X s " returnNum " methodreturn z * z; }}