Final e overriding

7 respostas
marciolx

o site www.examulator.com que mostra uma questão sobre o exame por dia apresenta hoje a seguinte pergunta:

Which of the following statements are true?

e as opções são:

1 To be overridden a method must have the same name, parameter types and return type

2 It is possible to override methods in a superclass or the same class

3 classes that are marked as final may not be overriden

4 an overriding method cannot have more access (be more public) than the method being overriden

As opções corretas segundo o site são 1, 3 e 4.

A alternativa 1 é correta, a 2 é incorreta, mas e a 3 e a 4??? Na 4, não seria o contrário, o “overriding method” pode ser mais acessível, e quanto à 3, o termo “overriding” refere-se à metodos e não a classes, uma classe final não pode ser extendida, não é isso?

7 Respostas

J

A 1 está certa …

A 2 errada

Agora a 3 estou na dúvida … é exatamente o q vc falou … uma classe final não pode ser herdada (extends) … agora os métodos dela eu não sei …

A 4 está certo mesmo … o método que está sobrescrevendo não pode ter acessibilidade maior q o método sobrescrito…

marciolx

No caso da 4, é o contrário, o método que está sobrescrevendo pode ter a mesma acessibilidade ou ser mais acessível que o método sobrescrito. Não pode ser mais restritivo, portanto a resposta é incorreta.

O programa a seguir dá erro porque Child está tentanto sobrescrever o método teste de forma a torná-lo menos acessível:

class Base {
	public void teste() {}
}

class Child extends Base {
	private void teste() {}
}
Rafael_Steil

A partir do momento em qua uma classe nao pode ser extendida, por ser declarada final, logicamente os metodos dela nao podem ser sobrescritos, pois vc nao consegue dar extends :).

Rafael

J

:oops:
Nossa … é verdade Rafael … que mancada … rs …

Bruno_Cardoso

hmm… mto interessante esse site, já está na minha lista de favoritos para eu ir lá todos os dias responder à pergunta… :lol: Deixem-me ver se percebi (para me habituar com estes termos técnicos). Overriding (polimorfismo) é quando uma classe q deriva d’outra usa um metodo com o mesmo nome, argumentos e tipo de retorno iguais mas q vai fazer algo de diferente em relação ao metodo da classe mãe, enquanto que overloading (sobrecarga) é a mesma coisa mas a assinatura pode ser diferente, ou seja os argumentos e tipo de variavel de retorno são diferentes, certo?

Espero não ter digo nenhum barbaridade, alguem me corriga se estiver enganado.

PEACE!

J

É isso aí Morcego … está certo …

marciolx

Para encerrar a discussão :slight_smile:

Marcus Green, mantenedor do site www.jchq.net (conhecido por todos que estudam para a certificação Java Programmer) e do simulado www.examulator.com, respondeu à um e-mail onde eu afirmei que as respostas 3 e 4 são incorretas e ele admitiu e corrigiu o erro, agora apenas a opção 1 é correta como eu “temia”. Acho que interpretação de texto também é importante para um bom desempenho no exame.

Your are corret, that question was faulty I have now updated it. Many
thanks for the feedback.
Marcus

[email removido] wrote:

Hi, first of all, congratulations for this excellent tool.

>Regarding this question, I think that options 3 and 4 marked as

correct answers are actually incorrect.

>Option 3 - overriding refers to methods, not classes

>Option 4 - an overriding method CAN be more public than the method

being overriden

>

>thank you

>

>marcio

>

>
Criado 13 de fevereiro de 2003
Ultima resposta 19 de fev. de 2003
Respostas 7
Participantes 4