Pessoal está rolando uma discrepância aqui e não sei o motivo.
Quando chamo o método t.turon(5) passando-lhe um valor int, ele chama o método turon de Turon, como se tivesse sobrescrito !
Quando faço um cast para um byte e o chamo assim : t.turon((byte)5); ele chama o método turon de Applicance. Então não sobrescrevel !
Segundo as regras de Polimorfismo, se não tiver o mesmo tipo de retorno ou compativel, e mesma
lista de parâmetros não é um override válido. Porque então quando chamo o metodo t.turon(5); ele me retorna esse saída: "Versão Turon "
public class Applicance {
public void turon(byte a) {
System.out.println("Versão Applicance");
}
}
public class Turon extends Applicance {
public void turon(int a) {
System.out.println("Versão Turon");
}
}
public class TestDriveAppliance {
public static void main(String[] args) {
Turon t = new Turon();
t.turon((byte)5); // Com essa chamada a versão chamada será a de Applicance -
t.turon(5); //Com essa chamada a versão chamada será a de Turon -
}
}