Vid programmering i Java , kan obskyra varningsmeddelanden visas under sammanställning . Fastställande av källan till dessa fel kan bli ett problem om du inte är medveten om det sammanhang felet eller hur man skall åtgärda det . I fallet med symbolen hantering, kan Java- program som använder objekt och arv presentera en svår felsökning situation. Det är dock viktigt att komma ihåg reglerna för klassen arv i Java , så att ett fel som en " symbol inte kan hittas " kan spåras på ett effektivt sätt . Den "kan inte hitta Symbol " Fel
När du kör ett Java -program , programmet först kompileras till bytekod . Konkret innebär detta att kompilatorn kontrollerar alla variabler , metoder och objekt deklareras i koden och skapar en slags referens för de variabla eller metod namn . Dessa namn , eller " symboler " representerar den plats i minnet för den variabel, ett objekt eller metod . Om du programmeraren försöker använda en variabel eller metod utan att först förklara det , kommer kompilatorn att ge ett " kan inte hitta symbolen " fel som anger att en variabel eller metod enligt medföljande namnet inte existerar .
Java-klasser och arv
Hur symbolerna definieras blir lite fler nyanser när man talar om Java klass arv . När du skapar Java-objekt , kan du härleda dessa objekt från andra klasser som redan finns . På så den härledda klassen " ärver " metoder och variabler för basklassen . När det gäller arv , förklarade en metod eller variabel i en basklass är direkt refereras från ärva klassen , vilket dessa symboler finns i härleda klassen .
Java Constructors och arv
En särskild metod i alla klasser härledda , eller inte , är konstruktören . Den " default " konstruktor allokerar minne för ett objekt när du initierar den i ditt program . Däremot kan du skapa en anpassad konstruktör för att initiera variabelvärden eller köra andra subrutiner när ett objekt skapas . När du skapar en anpassad konstruktör för en klass från en annan klass , dock måste du ringa explicit basen klassens konstruktor .
Metod Symboler och " Super " Keyword
konstruktorn belyser en viktig aspekt av klasser : ofta , metoder för en härledd klass " åsidosätta " metoderna för basklassen genom att använda samma metod namn för att definiera nya funktioner . Såsom i fallet med konstruktören måste den härledda klassen metoden anropa basklassen metod av någon anledning. Om du försöker och direkt anropa metoden i basklassen , kommer du att få en " symbol kan inte hittas " fel . Till exempel kan åsidosätta " ut" metoden för en basklass göras , men du kan inte ringa version basklass av " ut " direkt . Istället måste du använda " super " nyckelordet för att ringa , eftersom detta exempel illustrerar :
Klass X { public void returnNum ( int x ) {return x ;} }
Class Y förlänger X { public void returnNum ( ) { int z = super ( 5 ) , //anropar klass X : s " returnNum " methodreturn z * z ;} } Addera