Considere o código em Java abaixo:
interface Pes {
Integer getProva( );
}
class Pessoa extends PessoaPai {
@Override
public Integer getProva( ) {
return 4;
}
}
class PessoaAvo extends PessoaNeto {
private Integer prova = 4;
}
class PessoaBis extends PessoaNeto {
private Integer prova = 4;
@Override
public Integer getProva( ) {
return ++prova + super.getProva( );
}
}
class PessoaFilho extends Pessoa { }
class PessoaNeto extends Pessoa {
private Integer exercicio = 2;
@Override
public Integer getProva( ) {
return exercicio-- + 3;
}
}
class PessoaPai implements Pes {
@Override
public Integer getProva( ) {
return 6;
}
}
public class Prova {
public static void main(String[ ] args) {
Pes[ ] ps = new Pes[5];
ps[0] = new PessoaBis( );
ps[1] = new Pessoa( );
ps[2] = new PessoaFilho( );
ps[3] = new PessoaNeto( );
ps[4] = new PessoaAvo( );
for (Pes pac : ps) {
System.out.println(pac.getProva());
}
}
}
Assinale a alternativa que contém o resultado gerado, de cima para baixo, no console, após a execução desse código.