Uma importante característica da orientação a objetos é o fato de um objeto de uma classe poder ser utilizado em um contexto onde um objeto de uma superclasse é esperado. Este tipo de substituição é possível graças a qual dos conceitos a seguir?
Encapsulamento
Herança múltipla
Polimorfismo de subtipos
Modularidade
Classes parametrizadas