Pessoal eu to com muita duvida a respeito desse exercicio:
interface I {int i = 0;}
class A implements I {int i = I.i + 1;}
class B extends A{
int i = I.i + 2;
static void printAll(A obj){
System.out.print(obj.I);
}
public static void main(String args[]){
B b = new B();
A a = new B();
I i = new B();
printAll(b);
printAll(a);
printAll(i);
}
}
Qual será a tentativa de compilar e executar o seguinte programa?
Selecione uma alternativa.
A) Erro de Compilação
B) Imprime "000"
C) Imprime "222"
D) Imprime "210"
E) Nenhuma das alternativas
Minha resposta E, pois o metodo estatico não pode ser sobrescrito;
Resposta do Roberto Rubeinsten.
Este código não compilara pois o método printAll() recebe um argumento do tipo A. Nós declaramos a variavel I no metodo main e tentamos passa-lo ao metodo printAll(). Note que I não pode ser passada onde A é separada pois A esta implementando I. Uma referencia Interface/SuperClasse pode ser atribuida a uma referencia subclasse mas o oposto não é permitido. Portanto o compilador reclama que o método não é compativel.
Eu não entendi nd da explicação dele!!! Voces podem dar uma melhor?
e o que seria referencia Interface/superClasse?
Grato.
