I - O princípio do encapsulamento preconiza que um objeto deve esconder a sua complexidade interna.
CORRETO
II - Uma mensagem de um objeto A para um objeto B indica que A realizou uma tarefa requisitada por B.
Na verdade é o oposto, B realizou uma tarefa requisitada por A.
III - A existência da mesma operação polimórfica definida em duas classes, ClasseA e ClasseB, implica necessariamente que ou ClasseA seja subclasse de ClasseB, ou que ClasseB seja subclasse de ClasseA.
Não necessariamente.
Segue um cenário possível: A ClasseA e a ClasseB podem não possuir nenhum relacionamento direto entre si, e ambas serem diretamente subclasses de uma ClasseC. Assim, poderia existir uma operação polimórfica definida em todas essas classes.
Essa questão também foi comentada no link abaixo, deixando mais claro o item III:
http://linubr.blogspot.com/2012/08/questoes-de-java-da-prova-da-petrobras.html
Não concordo com o gabarito esse principio esta relacionado ao conceito de abstração.
Abstração
- Uma abstração refere-se a uma sequência de instruções que possuem uma função específica e limitada.
- Permite especificar procedimentos e dados internamente, mas suprimir a necessidade de que “estranhos” tenham conhecimento de detalhes de baixo nível.
- Os detalhes específicos são omitidos;
- É uma técnica contra a complexidade da programação;
- Permite que os programadores concentrem-se nos atributos essenciais e ignorem os atributos subordinados.
Encapsulamento:
sugere que os métodos sejam “categorizados por decisões de projeto que ocultem (cada uma delas) de todas as demais.”
- Prevê o isolamento de determinados elementos do objeto (métodos /atributos) de acordo com a necessidade de acesso a eles.
- Nem todo método e atributo precisam estar visíveis e acessíveis publicamente;
- Os dados de um objeto devem ser “protegidos” e apenas modificados por métodos da própria classe.
- O encapsulamento se dá através dos modificadores de acesso que controlam a visibilidade.