No que diz respeito à programação orientada a objetos, dois recursos são caracterizados a seguir.
I - Empacota dados e operações de determinado objeto em entidade única, de forma que, conhecendo o objeto, pode-se identificar as operações que ele pode suportar.
II - Refere-se ao poder que os objetos de classes distintas têm de invocar um mesmo método e obter comportamento diferente.
Os recursos I e II são conhecidos, respectivamente, como: