Kas yra anoniminės klasės?

Anoniminės klasės yra klasės, kurioms klasę programuojantis asmuo nesuteikia pavadinimo. Paprastai jie naudojami, kai klasės pavadinimo vadinti nebūtina, pavyzdžiui, kai klasė yra ne kas kita, kaip reikalaujamas kitos aukštesnės superklasės poaibis. Anoniminių klasių programavimo pranašumas yra tas, kad jos suteikia programuotojui galimybę supaprastinti savo kodą, ypač tais atvejais, kai anoniminės klasės tilps į kelias superklases. Pagrindinis trūkumas yra tas, kad anoniminės klasės negali apibrėžti konstruktorių arba padaryti privačių, saugomų ar statinių, nes pavadinimo nebuvimas pašalina šias galimybes.

Kompiuterių programavime klasė yra apibendrintas objektas, kuris gali atsirasti bet kuriuo konkrečių atvejų skaičiumi. Panašiai kaip terminas „lėktuvas“ apima visų tipų vieno variklio lėktuvus, dviejų variklių lėktuvus, karinius orlaivius ir keleivinius laivus, „klasė“ skaičiavimo terminais yra bendras objekto pavyzdys. Tai ne kas kita, kaip šablonas, kurį galima užpildyti pagal poreikį, kad atitiktų programuotojo ar galutinio vartotojo poreikius. Pavyzdžiui, kuriant klasę pavadinimu „dviratis“, greičiausiai būtų įtraukti dviračio parametrai; kitaip tariant, padangos dydis ir tipas, pavarų skaičius, konkreti dviračio markė ir modelis ir pan.

Programuotojai paprastai naudoja anonimines klases kaip superklasių pogrupius, kurie yra klasės, sudarytos iš kelių savo klasių. Tęsiant ankstesnį pavyzdį su „dviračių“ klase, anoniminis poklasis gali būti „padangos“, kuriame pateikiama informacija apie padangų dydį, markę ir pan.

To darymo pranašumas yra tas, kad anoniminė „padangų“ klasė taip pat gali tilpti į „dviračių“ arba „automobilių“ superklasę. Sukūręs ją kaip anoniminę klasę, programuotojas prireikus gali lengviau pakartotinai panaudoti savo darbą. Tai sutaupo laiko ir išlaidų, o kodą lengviau suprasti.

Trūkumas yra tas, kad be pavadinimo anoniminės klasės negali naudoti tų pačių funkcijų kaip ir pavadintos klasės. Pavyzdžiui, jie negali būti laikomi privačiomis, saugomomis ar ribotomis klasėmis. Be to, jie negali naudoti konstruktorių, kurie yra paprogramės, kai pirmą kartą pasirodo klasė, kuri inicijuoja klasę pagal numatytuosius parametrus. Šis lankstumo trūkumas yra natūralus kompromisas dėl anoniminės klasės paprastumo.