Što su anonimni razredi?

Anonimne klase su klase kojima osoba koja programira klasu nije dodijelila ime. Obično se koriste kada je imenovanje klase nepotrebno, kao što je kada klasa nije ništa više od potrebnog podskupa druge više nadklase. Prednost programiranja anonimnih klasa je u tome što daju programeru priliku da pojednostavi svoj kod, posebno u slučajevima kada će se anonimne klase uklopiti u više superklasa. Glavni nedostatak je taj što anonimne klase ne mogu definirati konstruktore ili učiniti privatnim, zaštićenim ili statičnim, budući da nedostatak imena eliminira ove mogućnosti.

U računalnom programiranju, klasa je generalizirani objekt koji se može pojaviti u bilo kojem broju specifičnih instanci. Slično kao što pojam “zrakoplov” široko pokriva sve vrste jednomotornih aviona, dvomotornih zrakoplova, vojnih zrakoplova i putničkih letjelica, “klasa” je u računalnim terminima generički primjer objekta. To nije ništa drugo nego predložak koji se može ispuniti prema potrebi kako bi odgovarao potrebama programera ili krajnjeg korisnika. Na primjer, stvaranje klase pod nazivom “bicikl” vjerojatno bi uključivalo parametre za bicikl; drugim riječima, veličina i tip gume, broj stupnjeva prijenosa, specifična marka i model bicikla, itd.

Programeri obično koriste anonimne klase kao podskupove superklasa, koje su klase konstruirane od više vlastitih klasa. Nastavljajući prethodni primjer s klasom “bicikl”, anonimna podklasa toga mogla bi biti “gume”, koja sadrži informacije o veličini gume, marki i tako dalje.

Prednost ovoga je ta što se anonimna klasa “guma” jednako dobro može uklopiti u superklasu “bicikla” ili superklasu “automobila”. Stvarajući ga kao anonimnu klasu, programer može lakše ponovno koristiti svoj rad ako je potrebno. To štedi vrijeme i troškove, te čini kod mnogo lakšim za razumijevanje.

Nedostatak je što bez imena anonimne klase ne mogu koristiti istu funkcionalnost kao imenovane klase. Na primjer, ne mogu se smatrati privatnim, zaštićenim ili ograničenim klasama. Osim toga, ne mogu koristiti konstruktore, koji su potprogrami kada se klasa prvi put pojavi koja inicijalizira klasu sa zadanim parametrima. Ovaj nedostatak fleksibilnosti prirodni je kompromis za jednostavnost anonimne klase.