Realizei um simulado, e fiquei com dúvida nesta questão, não sei senão interpretei(traduzi) bem a a questão:
1-)If a base class has a method defined as:
void method() { }
Which of the following are legal prototypes in a derived class of this class. Select the two correct answers.
A é uma subscrição correta do método (o método sobrescrito pode ter um nível de acesso igual ou mais visível que o da superclasse)
C é uma sobrecarga válida, pois a assinatura (parametro) do método muda
Incorretas:
B Não é nem uma sobrescrita nem uma sobrecarga válida
D O modificador de acesso não pode ser mais restritivo
cintiarsbr
Entendi, mas o compilador aceita realizar as modificações indicadas nas letras B e D, mas não que dizer que são sobrescritas corretas do método Pai, sobrescrita só é quando alteramos a sobrecarga do método, o corpo do método e o modificador de acesso não pode ser mais restritivo que o do pai, é isso?
cintiarsbr
Entendi, mas o compilador aceita realizar as modificações indicadas nas letras B e D, mas não que dizer que são sobrescritas corretas do método Pai, sobrescrita só é quando alteramos a sobrecarga do método, o corpo do método e o modificador de acesso não pode ser mais restritivo que o do pai, é isso?
gilmaslima
Vamos lá…
Sobrescrita:
A lista de argumentos do método não pode mudar, o modificador de acesso deve ser igual ou mais visível, o tipo de retorno não pode mudar, mas o tipo de retorno pode ser um subtipo.
Sobrecarga:
A lista de argumentos deve mudar, o tipo de retorno pode mudar.
diegosantiviago
só complementando:
B está incorreto porque para ser uma subscrição válida, não pode mudar os parâmetros e o retorno não pode ser alterado. Nesse caso, não mudou os parâmetros, continua sem nada, mas o tipo de retorno foi alterado. E não pode, exceto se passar no teste É-UM.