Užbaigiklis (angl. finalizer) – specialus objekto metodas, kurį vykdanti sistema automatiškai iškviečia, kuomet objektas nebėra pasiekiamas programos kodo (nebėra jokios nuorodos į jį).[1]. Užbaigiklis atlieka įvairius šiuo atveju būtinus klasei specifinius veiksmus.
Skirtingai nuo destruktoriaus, kuris programos kode kviečiamas tiesiogiai, užbaigiklio iškvietimo laikas paprastai nėra apibrėžtas. Vykdanti sistema gali jį iškviesti tiek tuojau pat objektui tapus nepasiekiamu, tiek vėliau ar (jei atminties pakanka) taip ir užbaigti programos vykdymą jo neiškvietus. Neapibrėžta ir laiko trukmė nuo užbaigiklio iššaukimo iki objekto sunaikinimo. Todėl užbaigiklis blogai tinka tvarkyti greitai išsekti galintiems resursams (tinklo jungtims ir pan). Destruktoriaus neturinčiose kalbose (Java) tokie resursai kiek galima greičiau grąžinami sistemai kitokiomis programavimo konstrukcijomis (try/catch ir pan).[2].
Paprastai laikoma klaida tiesiogiai kviesti užbaigiklį iš vykdomos programos kodo.
Jei užbaigiklio kodas sukuria naujų nuorodų į objektą, toks objektas gali būti „prikeliamas“. Ši galimybė apsunkina šiukšlių surinktuvo darbą, nors naudojama retai. Jei po to nuorodos vėl prarandamos, kai kuriose kalbose (Java) užbaigiklis antrą kartą nebeiškviečiamas.[3] Kalbose kurios užbaigiklį iškviečia pakartotinai (Python)[4] galimi „nemirtingi objektai“, neribotai ilgai išliekantys vien savo užbaigiklio sukuriamų nuorodų dėka.