Forelæsningsnoter i Objekt-orienteret Programmering Objekt-orienteret programmering i Java, del 2
Lokale og anonyme klasser
Vi slutter af med at give et eksempel på en klasse som er lokal i en metode.
Det er muligt at definere en lokal klasse på ethvert sted i en blok, herunder i metoder og konstruktorer
En lokal klasse er som en indre klasse, der er placeret endnu mere specifikt
En anonym klasse er en klasse uden navn, som instantieres umiddelbart
Klassen Outer med en lokal klasse Local i metoden method.
Klassen Outer med en lokal klasse Local i metoden method.
Eksemplet er helt igennem kunstigt. Det er svært at forestille en situation, hvor
noget lignende vil være nyttigt i praksis. Når vi senere får introduceret interfaces vil
det dog undertiden være nyttigt at lave lokale klasser som instantieres og returneres
til omverdenen. En sådan instans kan manipuleres via et interface.
Dette program udskriver tallet 45. Lad os forklare hvad der sker i programmet.
Hovedprogrammet main kalder den statiske metode method med 5 som parameter.
method laver en instans af den lokale klasse. Konstruktoren Local initialiserer
instVar til par + loc = 5 + 10 = 15. Bemærk at Local har tilgang til omkringliggende
lokale variable og parametre i method. (Disse skal dog af implementationstekniske
årsager være erklæret final - altså uforanderlige når først assignet).
Metoden methodLocal anvendt på instansen af Local returnerer nu 3*InstVar = 3*15 = 45.
method returnerer og instansen af Local forsvinder.