Imagem de fundo

Com relação à redefinição de métodos em uma linguagem de programação orientada a objeto...

Com relação à redefinição de métodos em uma linguagem de programação orientada a objetos, considere duas classes A e B, com B herdando (sendo uma subclasse) de A. Considere ainda que A define um método, m, com um parâmetro de entrada do tipo inteiro e sem parâmetro de retorno. Este método é redefinido em B, exatamente com a mesma assinatura e sem invocar qualquer método da superclasse. Finalmente, considere um identificador a, declarado com tipo A e inicializado com um objeto do tipo B. Neste contexto, a chamada de método a.m(2) tem o seguinte efeito:

A

execução do método m da classe A.

B

execução do método m redefinido em B.

C

erro de execução, pois a chamada é inválida, uma vez que é ambíguo qual método invocar.

D

execução do método m da classe A, seguido da execução do método m redefinido em B.

E

execução do método m da classe B, seguido da execução do método m redefinido em A.