Java kan ikke finne symbol med Method Out

Ved programmering i Java, kan obskure advarsler vises under kompilering. Bestemme kilden til disse feilene kan bli et problem hvis du ikke er klar over konteksten til feilen eller hvordan å løse det. I tilfelle av symbol håndtering, kan Java-programmer som bruker objektene og arv presentere en vanskelig situasjon feilsøking. Det er imidlertid viktig å huske på reglene for klassen arv i Java, slik at en feil, for eksempel et "symbol kan ikke bli funnet" kan spores effektivt.

Den "Finner ikke Symbol" Feil

Når du kjører et Java-program, programmet er første kompilert inn bytekode. Konkret betyr dette at kompilatoren sjekker alle variabler, metoder og objekter vises i koden og skaper en slags referanse for de varierende eller metodenavn. Disse navnene, eller "symboler" representerer plasseringen i minnet på variabelen, objekt eller metode. Hvis du programmerer forsøker å bruke en variabel eller metode uten først å erklære det, vil kompilatoren gi en "kan ikke finne symbol" feil betegner som en variabel eller metode under medfølgende navn ikke eksisterer.

Java klasser og arv

Hvordan symboler er definert blir litt flere nyanser når vi snakker om Java klasse arv. Når du oppretter Java-objekter, kan du utlede disse objektene fra andre klasser som allerede eksisterer. Ved å gjøre dette, avledet klasse "arver" metoder og variabler i basisklassen. I tilfelle av arv, er en metode eller variabel deklarert i en basisklasse refereres til direkte fra de arver klasse, noe som betyr at disse symbolene er tilgjengelig i utledet klassen.

Java Konstruktører og Arv

En spesiell metode i alle klasser, avledet eller ikke, er konstruktøren. Den "default" konstruktør tildeler minne for et objekt når du instantiate det i programmet. Men kan du lage en tilpasset konstruktør for å initialvariabelverdier eller kjøre andre subrutiner når et objekt opprettes. Når du oppretter en egendefinert konstruktør for en klasse som stammer fra en annen klasse, men du må eksplisitt kaller base klassen konstruktør.

Metode Symboler og "Super" Keyword

Konstruktøren illustrerer et viktig aspekt ved klasser: ofte, metodene for et utledet klasse "override" fremgangsmåtene ifølge base klasse ved å bruke samme metode navn for å definere ny funksjonalitet. Imidlertid, som i tilfellet av konstruktøren, må avledet klasse metode påkalle base klassen metode av en eller annen grunn. Hvis du prøver og ringe direkte metoden for base klassen, vil du motta en "symbol kan ikke bli funnet" feil. For eksempel, overstyrer "ut" metoden for en base klasse kan gjøres, men du kan ikke ringe base klassen versjon av "ut" direkte. I stedet må du bruke "super" søkeord for å ringe, da dette eksemplet illustrerer:

Klasse X {
public void returnNum (int x) {
returnere x;
}
}

Klasse Y strekker X {
public void returnNum () {
int z = super (5); // Kaller klasse X er "returnNum" metoden
returnere z * z;
}
}