Um desenvolvedor Java SE possui, em uma aplicação, duas subclasses B e C, estendendo a mesma superclasse A. Na superclasse A há um método calcularValor, também presente nas duas subclasses B e C, mas implementado de maneiras diferentes. A partir do método main de uma classe principal, utilizou-se o seguinte bloco de código:


A t1 = new A();

System.out.println(t1.calcularValor());

A t2 = new B();

System.out.println(t2.calcularValor());

A t3 = new C();

System.out.println(t3.calcularValor());


Após compilar e executar a aplicação, foram exibidos na tela os valores 4, 9 e 5. Nessa aplicação evidencia-se o uso de