Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Alteração pacote

package a;
import b.*;
public class A extends B { protected int a(String s) 
                           {return 2;} }

package b;
import a.*;
public class B { public int a(Object s) {return 1;} }



package a;
import a.*;
import b.*;
class C {
    public static void main(String[] args) {
        System.out.println(new A().a("a"));
    }
}

Neste caso funciona e imprime 2?

3 respostas

Sim Manoel, trocando o nome da classe de A para C não existe mais ambiguidade e o Java vai importar a classe A que estende de B gerando o resultado que você indicou.

Para essas questões o ideal é sempre criar as classes e fazer os testes com o compilador na linha de comando. Assim você consegue verificar as alternativas e também vê as mensagens de erro para cada tipo de problema.

package a;
import a.*;
import b.*;
class C {
    public static void main(String[] args) {
        System.out.println(new B().a("a"));
    }
}
//Nesse caso qual a saída? Continua sendo 2?
solução

Nesse caso, você vai invocar o método a() da classe B e esse método devolve 1.