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 sammenheng med feil eller hvordan du skal løse det . Når det gjelder symbol håndtering, kan Java-programmer som bruker objekter og arv presentere en vanskelig debugging situasjon . Det er imidlertid viktig å huske på reglene for klassen arv i Java, slik at en feil som et " symbol ikke kan finnes " kan spores effektivt. Den " Finner ikke Symbol" Feil
Når du kjører et Java- program , programmet første kompilert til byte kode . Konkret betyr dette at kompilatoren sjekker alle variabler , metoder og objekter deklarert i koden og skaper en slags referanse for de variable eller metode navn. Disse navnene , eller " symboler " representerer plasseringen til minne om den variabel, objektet 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 i henhold til den medfølgende navnet finnes ikke.
Java Klasser og arv
Hvordan symboler er definert blir litt flere nyanser når vi snakker om Java klassen arv . Når du oppretter Java-objekter , kan du utlede disse objektene fra andre klasser som allerede eksisterer . Ved å gjøre det , utledet klasse " arver " metodene og variablene i base klassen . Når det gjelder arv , erklærte en metode eller variabel i en base klasse er direkte referert fra arve klassen , betyr disse symbolene er tilgjengelig i utlede klassen .
Java Constructors og Arv
en spesiell metode i alle klasser , avledet eller ikke , er konstruktøren . Den " default" konstruktøren tildeler minne for et objekt når du instantiate det i programmet. Men kan du lage en egendefinert konstruktør for å initialisere variable verdier eller kjøre andre subrutiner når et objekt opprettes . Når du oppretter en egendefinert konstruktør for en klasse avledet fra en annen klasse , derimot, må du eksplisitt kalle basen klassens konstruktør .
Metode Symboler og " Super" Søkeord
< p > konstruktøren illustrerer et viktig aspekt av klasser : ofte , metodene for en avledet klasse " overstyre " metoder for base klassen ved å bruke samme metode navn for å definere ny funksjonalitet . Imidlertid , som i tilfellet av konstruktøren , må utledet klasse metode påkalle base klassen metode eller annen grunn. Hvis du prøver og ringe direkte metode for base klassen , vil du motta et " symbol finnes ikke " feil. For eksempel kan overstyre "ut" metoden av en base klasse gjøres, men du kan ikke kalle base klassen versjon av " ut" direkte. I stedet må du bruke " super " søkeord for å ringe , da dette eksemplet illustrerer : en
Class X { public void returnNum ( int x ) {return x ;} }
Class Y strekker X { public void returnNum ( ) { int z = super ( 5 ), //kaller klasse X er " returnNum " methodreturn z * z ;} }