bom, nao ha nenhum overriden no codigo, apenas overload
e como uma classe PAI pode receber uma filha, acho que vai sair:
“AAA”
Frank
O código compila sim.
Acho que o resultado é “AAA”, como o Maximiliano disse a classe pai pode extender a filho… 8)
Falow.
Betinhum
Mesmo sendo iniciante vou tentar:
Acho que imprime “ABC”, pois a classe C tem, além de seu método, os métodos herdados e como cada método recebe um parâmetro de tipo diferente será chamado o método correspondente ao tipo.
Ironlynx
Realmente acho q é AAA,pq é a superclasse,
pq todas as demais herdam dela (ainda q indiretamente) o método
original m1,q só é modificado localmente nas classes filhas,
logo o método da superclasse é
sempre chamado primeiro.
marciolx
acertou quem respondeu AAA (e overload), na verdade a questão é uma tentativa de pegadinha para que os incautos pensem que se trata de overriding quando na verdade o método m1 foi apenas overloaded e portanto é sempre a versão da referência que está sendo chamada.
L
leo.dep
Pergunto em:
c2.m1(b1)
se m1 recebe um objeto B , ele nao deveria imprimir B ja que C herda o metodo m1 () da classe B???
maxguzenski
mas no caso, o codigo é
A c2 = new C();
isso faz um objeto do tipo A (em tempo de compilacao)
com os metodos que sofrem override em C
como C nao faz nenhum override, fica como se fosse A c2 = new A();