Den här sidan innehåller ett förslag till svensk Javaterminologi och ger samtidigt en kort översikt över språket Java. Alla nyckelord och de viktigaste specialtecknen finns med. I slutet av dokumentet finns också en kort engelsk-svensk ordlista.
= är tilldelningsoperatorn (assignment operator) som tilldelar variabeln till vänster om operatorn värdet av uttrycket till höger. Om man tilldelar en referensvariabel värdet av en annan referensvariabel så kommer båda variablerna att referera till samma objekt. (En tilldelningssats har också ett värde och kan ingå i ett uttryck.)
== är »lika med«-operatorn som returnerar true om värdet av uttrycket till vänster är lika med värdet av uttrycket till höger om operatorn, och annars false. När man jämför två referensvariabler så får man inte veta om de objekt som variablerna refererar till är lika, utan om variablerna refererar till samma objekt.
!= är »skilt från«-operatorn som returnerar true om värdet av uttrycket till vänster inte är lika med värdet av uttrycket till höger om operatorn, och annars false.
< är »mindre än«-operatorn som returnerar true om värdet av uttrycket till vänster är mindre än värdet av uttrycket till höger om operatorn, och annars false.
<= är »mindre än eller lika med«-operatorn som returnerar true om värdet av uttrycket till vänster är mindre än eller lika med värdet av uttrycket till höger om operatorn, och annars false.
> är »större än«-operatorn som returnerar true om värdet av uttrycket till vänster är större än värdet av uttrycket till höger om operatorn, och annars false.
>= är »större än eller lika med«-operatorn som returnerar true om värdet av uttrycket till vänster är större än eller lika med värdet av uttrycket till höger om operatorn, och annars false.
&& (dubbelt och-tecken) är »och«-operatorn som returnerar true om både uttrycket till vänster och till höger om operatorn är true, annars false. Beräkningen utförs med lat beräkning (lazy evaluation): Om uttrycket till vänster är falskt, så beräknas inte det högra uttrycket. Detta kan vara användbart om man vill skriva en test där det högra uttrycket är giltigt endast om det vänstra uttrycket är sant: a != null && a.full()
|| (dubbelt lodstreck) är »eller«-operatorn som returnerar true om minst ett av uttrycken till vänster och till höger om operatorn är true, annars false. Beräkningen utförs med lat beräkning (lazy evaluation): Om uttrycket till vänster är sant, så beräknas inte det högra uttrycket. Detta kan vara användbart om man vill skriva en test där det högra uttrycket är giltigt endast om det vänstra uttrycket är falskt: i == 0 || j/i > 8
// är dubbla snedstreck som markerar inledningen på en kommentar som sträcker sig till slutet av raden.
Allt mellan tecknen /* och */ är en kommentar.
Tecknet /** används för att markera början på en dokumentationskommentar, en kommentar som också kan ingå i automatgenererad dokumentationen.
{} är klammerparenteser (curly braces) som avgränsar ett block. Kompilatorn betraktar allt inom blocket som en sats.
[] är hakparenteser (square brackets) som man använder för att ange index i en vektor.
% är resten (remainder) vid heltalsdivision.
@ används för att göra notiser (annotations) i Javakod.
' (apostrof, Unicode U+0027) kallas enkelfnutt och används för att skriva teckenlitteraler. Exempel: 'k', '\t' (tabulatortecken), '\u0b87' (Unicodetecken nummer b87).
" (citattecken, Unicode U+0022) kallas dubbelfnutt och används för att skriva stränglitteraler. Exempel: "hello".
Nyckelordet abstract används för att ange att en klass är abstrakt, det vill säga att den inte kan instansieras, utan endast kan användas som basklass vid arv. En abstrakt klass innehåller vanligtvis en eller flera abstrakta metoder, metoder som endast har signatur (namn, returtyp och parameterlista) men saknar implementation.
En adress är ett unikt tal som representerar en minnesposition i datorns internminne.
En anropsparameter (actual parameter) är ett värde som skickas till en metod vid ett metodanrop. En anropsparameter är alltid ett uttryck, dvs en litteral, en variabel eller ett sammansatt uttryck.
Ett appletprogram eller miniprogram är ett Javaprogram som ingår som en del av en webbsida.
Arv innebär att man deklarerar en ny klass (subklassen) genom att utvidga en gammal klass (basklassen eller superklassen) med nya fält- eller metoddeklarationer. Fält och metoder som ärvs från basklassen är tillgängliga i subklassen som om de vore lokalt deklarerade. Observera att konstruktorer inte ärvs.
Automatisk typkonvertering (arithmetic promotion) sker när man utför en aritmetisk operation med operander av olika typ. Den typ med minst talområde konverteras automatiskt till ett större talområde: byte -> short -> char -> int -> long -> float -> double.
En basklass eller superklass är en klass från vilken den aktuella klassen ärver.
Ett block är en grupp av satser som betraktas som en enhet. Ett block avgränsas av klammerparenteser, {}. Man kan använda ett block på samtliga ställen där man kan använda en sats och kompilatorn betraktar allt inom blocket som vore det en enda sats. Variabeldeklarationer som görs inuti ett block gäller endast lokalt inom blocket.
Nyckelordet boolean anger en datatyp som rymmer logiska värden. En variabel av typ boolean kan endast anta två värden, true och false.
Nyckelordet break används för att lämna ett block i förtid. Används ofta för att lämna en slinga (for, while, do while) eller switch-sats.
Nyckelordet byte anger en datatyp som rymmer 8-bitars heltalsvärden. Javas normala heltalstyp är int.
Bytekod är ett format för representation av Javaprogram. Koden är inte lättläst för människor men kan tolkas av alla datorer som har en Javatolk. En Javakompilator översätter källkod till bytekod.
Nyckelordet case används för att ange de olika fallen i en switch-sats.
Nyckelordet catch används tillsammans med try för att hantera ett särfall (exception).
Nyckelordet char anger en datatyp som rymmer 16-bitars tecken.
Nyckelordet class används för att deklarera en ny klass.
Nyckelordet const är reserverat men används ej i språket.
Nyckelordet continue används för att avbryta en iteration i en slinga (for, while, do while) i förtid och i stället direkt påbörja nästa iteration.
Nyckelordet default används för att hantera ett värde som inte explicit anges i en switch-sats.
En deklaration introducerar en ny enhet i ett program och inkluderar en identifierare som kan användas för att referera till denna enhet. I Java finns det paket-, import-, klass-, gränssnitts-, variabel- och metoddeklarationer.
Nyckelorden do while används för att skapa en slinga som utförs minst en gång.
Nyckelordet double anger en datatyp som rymmer 64-bitars flyttal.
Nyckelordet enum används för att deklarera en uppräkningstyp (enumerated type), en typ vars tillåtna värden består av en fix mängd konstanter, till exempel årets månader eller korten i en kortlek.
Nyckelordet extends används i deklarationen av en klass för att ange den omedelbara superklassen. Om man inte anger någon omedelbar superklass så ärver klassen från Object.
Nyckelordet final kan användas som modifierare för klasser, metoder och variabler. final anger att en klass inte kan utvidgas genom arv, att en metod inte kan överskuggas eller att en variabel är en konstant.
Nyckelordet finally används tillsammans med try för att ange ett block som alltid skall utföras, vare sig det har uppstått ett särfall eller inte.
Nyckelordet float anger en datatyp som rymmer 32-bitars flyttal. Denna flyttalstyp används normalt endast då man behöver spara utrymme.
Nyckelordet for används för att skapa en slinga.
En formell parameter (formal parameter) är en lokal variabel i en metod som finns med i parameterlistan. Den får sitt startvärde från anropsparametern vid metodanropet. Detta sker på samma sätt som vid en tilldelningssats.
Ett fält (field) är en variabel som deklareras i en klass. Det finns två sorters fält: instansvariabler (fält utan modifieraren static) som tillhör objekten och klassvariabler (fält med modifieraren static) som tillhör klassen själv. Klassvariablerna är gemensamma för klassen och det finns endast en minnesplats för varje klassvariabel vid programexekveringen oberoende av antalet klassinstanser. Varje objekt innehåller en minnesplats för varje instansvariabel.
Den förvalda konstruktorn (default constructor) är den konstruktor som finns i en klass där det saknas en explicit konstruktordeklaration. Den förvalda konstruktorn tar inga parametrar och utför inga operationer.
En generisk typ är en klass eller ett gränssnitt vars deklaration har en eller flera typparametrar. Exempel: gränssnittet java.util.List<E> är en generisk typ med en typparameter E som representerar typen hos listans element.
Nyckelordet goto är reserverat men används ej i språket.
Ett gränssnitt (interface) är en klass som endast innehåller konstanter (fält med modifierarna static och final) och metodsignaturer. Det går inte att instansiera ett gränssnitt, men ett gränssnitt fungerar som en typ i Java. En variabel av typ A, där A är ett gränssnitt, kan referera till alla objekt som är instanser av klasser som implementerar gränssnittet A. En klass kan implementera ett eller flera gränssnitt genom att ange namnen på gränssnitten efter nyckelordet implements i början av klassdeklarationen och dessutom ge fullständiga deklarationer för de metoder som finns i dessa gränssnitt.
En identifierare är namnet på en klass, ett gränssnitt, en metod eller en variabel.
Nyckelorden if else används i villkorssatser. Koden i det block som står före else utförs endast om det logiska uttrycket beräknas till true, annars utförs det block som står efter else.
Nyckelordet implements används i deklarationen av en klass för att ange vilka gränssnitt som klassen implementerar.
Nyckelordet import används för att importera paket till ett Javaprogram. En import-sats måste komma först i filen, före klassdeklarationen.
Att initiera en variabel innebär att ge den ett startvärde. Initieringen sker endast en gång, i samband med att minnesplatsen för variabeln skapas. Lokala variabler måste initieras explicit av programmeraren. Om det finns risk för att en lokal variabel inte har fått ett startvärde så upptäcks detta av kompilatorn. Fält behöver inte initieras explicit; det sker automatiskt. Fält av numerisk typ initieras till 0 eller 0.0, fält av den logiska typen (boolean) initieras till false och fält av referenstyp initieras till null. Även elementen i en vektor initieras automatiskt på detta sätt.
Operatorn och nyckelordet instanceof används för att bestämma ett objekts klass.
En instans av en klass är ett objekt som skapats med operatorn new. Man säger att klassen instansieras när man anropar new.
Att instansiera en klass är detsamma som att skapa ett objekt av klassen. Instansieringen sker med nyckelordet new. Instansieringen sker i flera steg. Först allokeras minne för samtliga instansvariabler som är deklarerade i klassen (inklusive superklassernas instansvariabler). Därefter initieras dessa fält, antingen med sina förvalda värden (0, 0.0, false respektive null) eller med de värden som anges i klassdeklarationen. Sedan anropas en av metodens konstruktorer, dess kod exekveras, och avslutningsvis returneras en referens till det nyligen skapade objektet.
En instansvariabel är ett fält som saknar modifieraren static. Instansvariablerna i en klass utgör en mall för de objekt som skapas utifrån klassen. Varje objekt innehåller en minnesplats för varje instansvariabel.
Nyckelordet int anger en datatyp som rymmer 32-bitars heltalsvärden.
Nyckelordet interface används för att deklarera ett nytt gränssnitt (interface).
Paketet java.lang importeras automatiskt till alla Javaprogram.
En Javatolk (Java virtual machine, byte-code interpreter) är ett program som kan tolka och exekvera ett Javaprogram i bytekodsformat.
En klass har tre funktioner i Java:
En klassmetod är en metod som deklareras med modifieraren static. Den kan anropas utan att använda en referens till en instans av dess klass. Eftersom ett sådant metodanrop inte är kopplat till något objekt så kan klassmetoder inte referera till klassens instansvariabler.
En klassvariabel är detsamma som ett statiskt fält. Klassvariablerna tillhör klassen själv. De är gemensamma för alla objekt i klassen och det finns endast en minnesplats för varje klassvariabel vid programexekveringen oberoende av antalet objekt.
En kompilator översätter ett program från ett format till ett annat. Oftast översätter en Javakompilator källkod till bytekod.
En konstant är en variabel vars värde inte kan ändras efter initieringen. I Java deklarerar man konstanter med nyckelordet final.
En konstruktor är den metod som anropas när man skapar (instansierar) ett objekt av en klass. En konstruktor deklareras inuti en klass och den har samma namn som klassen själv. Det är möjligt att överlagra konstruktorer: en klass kan ha flera konstruktorer, var och en med sin unika parameterlista.
Källkod är det normala sättet att representera ett Javaprogram i ett format läsbart för människor.
En litteral är källkodsrepresentationen av ett värde av primitiv typ, strängtyp, eller null-typen. Exempel: "hello", 'k', 8, 1.0E4, true, null.
En lokal variabel är en variabel som deklareras inuti ett block eller inuti en metod (som ju består av ett block) eller är formell parameter till en metod. Den lokala variabeln har begränsad livslängd; den skapas när man börjar exekvera blocket och den är inte längre åtkomlig när man lämnat blocket. Den lokala variabeln är inkapslad i blocket; satser utanför blocket kan inte referera till den lokala variabeln. De formella parametrarna i en metoddeklaration är också lokala variabler; den enda skillnaden är att dessa variabler initieras av den kod som anropar metoden, medan övriga lokala variabler initieras lokalt inuti blocket.
Nyckelordet long anger en datatyp som rymmer 64-bitars heltalsvärden.
Medlemmarna i en klass är dess fält och metoder.
En metod är en namngiven grupp av variabeldeklarationer och satser som kan anropas (exekveras) vid behov. En metod deklareras alltid i en klass.
Vid ett metodanrop utförs den kod som finns i metodens block. Anropsparametrarna används för att förse metoden med indata. Metoden kan också vidarebefordra utdata till den anropande koden genom en retursats.
I en metoddeklaration anger man vilken kod som skall exekveras när metoden anropas. Metoddeklarationen innefattar metodens namn, en parameterlista (som kan vara tom), en returtyp (som kan vara void) och ett block som innehåller koden.
Nyckelordet native är en modifierare som anger att en metod är skriven i ett annat programspråk än Java.
Nyckelordet new används för att skapa (instansiera) nya objekt och vektorer.
Nyckelordet null är en litteral som anger värdet för en referens som inte refererar till något objekt.
Ett nyckelord eller reserverat ord är ett fördefinierat ord i Java, exempel: if, for. Nyckelord kan inte användas som identifierare.
Klassen Object deklareras i paketet java.lang och är superklass till alla andra klasser i Java.
Ett objekt är antingen en instans av en klass eller en vektor. Ett objekt skapas under exekveringen av ett program. Objektet har ett antal unika minnespositioner till sitt förfogande. När ett nytt objekt instansieras så allokeras minne för varje instansvariabel som finns i klassdeklarationen. I Java kan man endast referera till objekt via referensvariabler. När det inte längre finns någon referens till ett objekt så blir objektet kandidat för skräpsamling.
En operator är en symbol som representerar en operation i ett programspråk. Additionsoperatorn +, tilldelningsoperatorn = och typjämförelseoperatorn instanceof är exempel på operatorer i Java.
Nyckelordet package används för att ange vilket paket klasserna och gränssnitten i en fil tillhör. Paketdeklarationen måste komma först i filen. Om man inte anger något paket så kommer filens klasser att tillhöra ett namnlöst paket gemensamt för alla filer utan paketdeklaration.
Ett fält eller en metod har paketåtkomst om man inte anger någon åtkomstmodifierare. Det innebär att samtliga klasser som ligger i samma paket kan utnyttja fältet eller metoden.
Med parameter menar man antingen anropsparameter, det värde som skickas till en metod vid ett metodanrop, eller formell parameter, den identifierare man använder för att namnge en parameter i metoddeklarationen. Den formella parametern får sitt värde från anropsparametern vid metodanropet och är en lokal variabel i metoden.
En parametriserad typ är en generisk typ försedd med verkliga typparametrar. Exempel: List<String> är en parametriserad typ som representerar en lista av strängar.
Polymorfism är en grundläggande organisationsprincip i Java som tillåter oss att implementera flera klasser som alla innehåller ett antal metoder med gemensamt namn och gemensam parameterlista (antingen genom att de implementerar ett och samma gränssnitt eller genom att de ärver från samma superklass) och behandla objekt av dessa klasser på ett likformigt sätt. Vilken metod som anropas vid ett metodanrop a.x() beror alltså på objektets klass. Man säger att Java har dynamisk bindning. När Javatolken anropar en metod a.x(p1, ... , pn) så undersöker tolken först om objektets klass har någon metod som matchar x(p1, ... , pn) och i så fall anropas denna metod. Om inte, så undersöker tolken om det finns någon matchande metod i den närmaste superklassen. Skulle det inte finnas någon metod där, så fortsätter man uppåt till nästa superklass etc.
De primitiva typerna i Java är boolean, byte, char, short, int, long, float och double.
Nyckelordet private är en åtkomstmodifierare för medlemmar (metoder och fält). Det anger att en medlem inte är åtkomlig från någon annan klass.
Nyckelordet protected är en åtkomstmodifierare för medlemmar (metoder och fält). Det anger att en medlem är åtkomlig från klassens subklasser samt från övriga klasser i samma paket.
Nyckelordet public är en åtkomstmodifierare för medlemmar (metoder och fält). Det anger att en medlem är åtkomlig från samtliga klasser.
En referensvariabel är en variabel som kan innehålla en refererens till ett objekt eller en vektor. Referensen består antingen av objektets minnesadress eller det speciella värdet null, som anger att variabeln för tillfället inte refererar till något.
En referenstyp i Java är antingen en klass, ett gränssnitt eller en vektortyp (tex int[]). En referensvariabel har den typ som anges när man deklarerar variabeln och kan referera till objekt av denna klass samt objekt av samtliga subklasser.
Ett reserverat ord eller nyckelord är ett fördefinierat ord i Java, exempel: if, for. Nyckelord kan inte användas som identifierare.
Nyckelordet return används för att återvända från en metod till den punkt i programmet där metodanropet skedde. En retursats kan också användas för att specificera ett returvärde för den anropade metoden.
Returtypen är typen på det värde som returneras av en metod. Returtypen anges före metodnamnet i metoddeklarationen. En metod som inte returnerar något värde har returtypen void.
En rå typ består av en generisk typ utan tillhörande typparametrar. Exempel: den råa typen för List<E> är List. Råa typer finns för att ge bakåtkompatibilitet med program skrivna innan generiska typer introduceras i Java. Använd inte råa typer i ny kod.
Räckvidden (scope) för en variabel är de platser i koden där variabeln kan användas. En lokal variabel kan endast användas i det block i vilket den är deklarerad. Räckvidden för ett fält eller en metod bestäms av dess åtkomstmodifierare: private, protected eller public. Fält och metoder utan åtkomstmodifierare har paketåtkomst och samtliga klasser som ligger i samma paket kan då utnyttja fältet eller metoden.
En sats är en komplett operation i ett Javaprogram. Satser utförs för att uppnå en effekt och de har inte något värde. Satser avslutas med ett semikolon.
Nyckelordet short anger en datatyp som rymmer 16-bitars flyttal. Javas normala heltalstyp är int.
Signaturen för en metod utgörs av metodens namn och parameterlistans typer. Varje metod är unikt definierad av sin signatur. Därmed är det möjligt att ha flera överlagrade metoder med samma namn men olika parametrar.
Att ett fält eller en metod har skyddad åtkomst anges med åtkomstmodifieraren protected. Det innebär att klassens subklasser samt klassser i samma paket kan utnyttja fältet eller metoden.
Skräpsamling (garbage collection) är den process som utförs av Javatolken för att hitta och återanvända minnet för de objekt som inte längre är åtkomliga från programmet.
En slinga (loop) är ett antal satser i ett program som utförs så länge ett villkor är sant. I Java skapar man slingor med for, while eller do while.
Nyckelordet static är en modifierare för metoder och fält. Ett statiskt fält kallas också klassvariabel och det är gemensamt för alla instanser av klassen. En statisk metod kallas också för en klassmetod och den kan anropas utan att använda en referens till ett objekt.
En statisk metod eller klassmetod är en metod som kan anropas utan att använda en referens till en instans av dess klass. Eftersom ett sådant metodanrop inte är kopplat till något objekt så kan klassmetoder inte referera till klassens instansvariabler.
En sträng (string) är en ordnad följd av tecken. Strängar representeras i Java med hjälp av klassen String och särskilda stränglitteraler såsom "hello".
En subklass är en klass som ärver fält och metoder från en superklass.
Nyckelordet super refererar till den aktuella klassens närmaste superklass. Nyckelordet används också för att anropa superklassens konstruktorer.
En superklass eller basklass är en klass från vilken den aktuella klassen ärver.
Nyckelordet switch används för att skapa en tilldelningssats med flera alternativ.
Nyckelordet synchronized är en modifierare för metoder. Det används för att synkronisera åtkomsten till ett objekts instansvariabler när flera trådar har tillgång till objektet. Synkroniseringen sker med hjälp av ett lås i objektet.
Ett särfall (exception) är en oväntad händelse som inträffar under programkörningen. Särfall representeras av objekt i Java. Ett särfall genereras av en throw-sats. Man kan antingen fånga särfallet i en try-sats eller vidarebefordra det genom att använda nyckelordet throws i metoddeklarationen.
Ett tecken (character) är en symbol (bokstav, siffra, skiljetecken, etc) och representeras i Java av den primitiva datatypen char.
Nyckelordet this är en referens och refererar till det objekt som exekverar den kod som innehåller referensen. Nyckelordet används också för att anropa klassens egna konstruktorer.
Nyckelordet throw används för att generera ett särfall.
Nyckelordet throws används i metodsignaturer för att ange vilka särfall som vidarebefordras av metoden.
Vid en tilldelning (assignment) ger man en variabel ett nytt värde. En tilldelning kan göras med tilldelningsoperatorn =. Tilldelning sker också vid metodanrop: de formella parametrarna tilldelas värdet av motsvarande anropsparametrar.
Nyckelordet transient är reserverat och används som modifierare för fält. Det anger att fältet inte tillhör det bestående tillståndet hos ett objekt (det som sparas då objektet lagras på externminne).
En tråd är en oberoende process som exekverar i ett program. I ett Javaprogram kan flera trådar exekvera samtidigt.
Java har två sorters typer, referenstyper och primitiva typer.
En typkonvertering (cast) består av namnet på en typ skrivet inom parentes, och används då man explicit vill ändra typen (för uttryck av primitiv typ också värdet) av ett uttryck. Till exempel, efter satserna double x = 2.5; int i = (int) x; så har x värdet 2.5 och i värdet 2.
Typparametrar används för att deklarera generiska typer. Exempel: E är en typparameter som anger elementens typ i den generiska listan java.util.List<E>.
Unicode är en standard som numrerar de tecken som behövs för att kunna skriva texter på jordens alla vanligt förekommande språk. Strängar i Java använder Unicode-tecken kodade med teckenkoden UTF-16. Det innebär att alla västerländska tecken representeras av en char, medan vissa österländska tecken kräver två char.
Ett uttryck (expression) är en av beståndsdelarna i en sats. Ett uttryck består av operatorer och operander. Operanderna kan vara variabler, metodanrop eller litteraler. Det går att beräkna uttryckets värde.
En variabel är en identifierare i ett program som representerar en minnesposition i vilken variabelns värde lagras under exekveringen av programmet. En variabel har alltid en typ och kan endast innehålla värden som är kompatibla med denna typ. I Java finns tre sorters variabler: lokala variabler (variabler som deklareras inuti ett block samt formella parametrar), instansvariabler och klassvariabler (statiska fält).
En vektor (array) är en ordnad lista av element av samma typ. Varje element har ett unikt nummer från 0 till n-1, där n är vektorns storlek. Vektorn är ett sorts objekt och den skapas med new.
En villkorssats (conditional statement) är en sats som gör det möjligt att välja mellan ett eller flera alternativa satser beroende på om ett villkor är uppfyllt eller inte. I Java skapar man villkorssatser med if else eller switch.
Nyckelordet void används i deklarationen av en metod för att ange att metoden inte returnerar något värde.
Nyckelordet volatile är en modifierare för fält som anger ett mera strikt tillvägagångssätt då flera trådar samtidigt försöker läsa eller skriva i ett fält.
Nyckelordet while används för att skapa en slinga.
En åtkomstmodifierare (access modifier) anger vilka andra klasser som kan komma åt fält och variabler i en klass. Det finns fyra nivåer: allmän åtkomst (public access) anges med modifieraren public, skyddad åtkomst (protected access) anges med modifieraren protected, paketåtkomst (packet access) får man om man inte anger någon modifierare och privat åtkomst (private access) anges med modifieraren private.
En metod kan överskuggas (override) av en metod med samma signatur (namn och parameterlista) i en subklass. Vilken metod som anropas vid ett metodanrop a.x() beror på klassen hos objektet som a refererar till. Detta fenomen kallas polymorfism.
Ett fält kan också överskuggas (override) av ett fält med samma namn i en subklass. Vilket fält som avses med notationen a.x beror på typen hos referensvariabeln a (alltså inte objektets klass). Det är olämpligt att överskugga fält, men detta är dock tillåtet i Java eftersom det annars inte skulle vara möjligt att lägga till nya fält i en superklass utan att riskera att subklasser blir ogiltiga. En lokal variabel kan inte överskuggas.
Överlagring (overloading) av metoder innebör att man kan ha flera metoder med samma namn, men olika parameterlista. Det finns också en överlagrad operator i Java: additionsoperatorn + används både för addition av tal och sammansättning av strängar.