FernandoFranzini,
Veja bem, você NÃO está discordando de mim, até porque eu ENTENDI e CONCORDO com o que vocÊ disse. E isso é a base do polimorfismo, sim. O que eu disse é que deve ter cuidado em dizer que isso é uma “anulação”. Até porque o método ainda do pai ainda pode ser usado mesmo na classe que está reescrevendo, usando-se o “super”. Foi apenas isso o que eu disse.
Para mim, uma coisa que é anulada está sem uso e ponto final, entende? Estou faznedo só uma observação, porque dessa forma é ambíguo. O que não se pode é usar uma classe que tem uma classe filha de outra e dela querer se chamar um método do pai. Aí ele fica como anulado, mesmo. Exemplo:
ClasseX
ClasseY (herda de ClasseX e reescreve um de seus métodos)
ClasseMain (a única que tem o método main e usa APENAS a ClasseY)
na ClasseY o método reescrito AINDA NÃO é NULO, ele pode ser usado, mesmo no método que o reescreve, ele pode ser chamado usando-se o super.metodoReescrito(). No meu entender, até aqui ainda não deveria ser chamado de método anulado, porque POSSO usar ainda, pode ser chamado de mpetodo reescrito, porque estou escrevendo por cima dele, mas uma coisa nula NÃO pode ser usada (no meu entender, levando pelo lado do português), um exemplo disso sao variaveis de instancia com o valor NULL (nulo). Elas podem de alguma forma, qualquer forma serem usadas, tem algum significado, podem executar algum metodo? Nao, ne? Entretanto os metodos sobrescritos podem ser invocados usando-se o super.metodo();
Na ClasseMain a coisa muda de figura, porque eu nao posso, através de uma instância da ClasseY (que é a que ela usa) chamar um método da ClasseX. Aí eu poderia dizer que o método está nulo, porque eu não tenho meios, nao tenho um caminho por onde chamá-lo.
Mas eu entendi completamente o que você falou, só fica meio estranho por conta do portuguÊs, mesmo. Concordo com vocÊ em termos de programação e dos conceitos.
O exemplo que dei nao esta complicado, é um exmplo claro de sobrecarga de operadores. O que eu acho que nao ficou muito claro foi dizer que JAva nao possui tal sobrecarga. Pelo que tem na literatura, ela tem sim, o que nao é permitido é CRIAR uma sobrecarga do nada.
Dessa forma, o override GERA a anulação do metodo dali pra frente. Mas NA CLASSE que PRODUZ o override, o método ainda está vivo. Foi isso que eu disse.