Questao simulado scjp 1.5

class FWD {
  int doMud(int x) { return 1; }
 }
 class Subaru extends FWD {
   int doMud(int... y) { return 2; }
 int doMud(long z) { return 3; }
 } 
 class Race {
   public static void main(String [] args) {
     FWD f = new Subaru();
     System.out.println(f.doMud(7));
   }
 }

Alguem pode me dizer pq a resposta é 1 e nao 7??

f nao é um objeto do tipo Subaru e nao iria recorrer a um metodo doMud dessa classe?
assim chamaria um long que tem preferencia sobre um varargs

o método chamado tem a assinatura int doMud(int x), esse método é o doMud de FWD…

[quote]
f nao é um objeto do tipo Subaru e nao iria recorrer a um metodo doMud dessa classe? [/quote]
Não, f é FWD, f é uma referência a um objeto Subaru, mas pense bem se vc fosse usar um f como Subaru provavelmente vc teria de fazer um cast…

[quote=LuizClaudio]o método chamado tem a assinatura int doMud(int x), esse método é o doMud de FWD…

[quote]
f nao é um objeto do tipo Subaru e nao iria recorrer a um metodo doMud dessa classe? [/quote]
Não, f é do tipo FWD, ma é tb uma referência a um objeto Subaru, pense bem se vc fosse usar um f como Subaru provavelmente vc teria de fazer um cast…[/quote]