Legarea dinamică este procesul de conectare a unei funcții (apel de procedură) la o anumită metodă (secvență de cod) la timpul de execuție. Aceasta înseamnă că funcția care trebuie executată printr-o metodă rămâne necunoscută -timp. Legarea dinamică este, de asemenea, menționată ca legare la timpul de execuție sau legare târzie.
Conceptul de legare este strâns legat de alte concepte de programare orientate pe obiecte, cum ar fi moștenirea și polimorfismul. Legarea înseamnă pur și simplu legătura dintre definiția metodei și apelul metodic. Obiectele actuale sunt utilizate în timpul executării pentru legare. Legarea dinamică permite dezvoltatorilor să interfețeze noi secvențe de coduri și obiecte cu un sistem fără a modifica codul existent, eliminând astfel declarațiile de comutare. Suprascrierea metodei este un bun exemplu de legare dinamică.
Opusul legării dinamice este obligatoriu static. Spre deosebire de legarea dinamică, legarea statică are loc în timpul compilației. Este uneori menționată ca legare timpurie deoarece legarea are loc înainte ca aplicația să ruleze. Un bun exemplu de legare statică este suprasolicitarea metodei. O altă diferență cheie între cele două tipuri de legare este aceea că legarea statică folosește informații de clasă pentru legare, în timp ce legarea dinamică utilizează obiecte pentru a rezolva legarea. Momentul în care are loc legarea afectează performanța generală a programului. Dacă legarea are loc mai devreme, siguranța și eficiența cresc în timp ce flexibilitatea scade.