Prévia do material em texto
Aprofundamento de Herança e Polimorfismo em Java 1. Considere duas classes chamadas “Base” e “Derivada”, de tal forma que a primeira é superclasse da última. A classe “derivada” atende ao princípio da substituição de Liskov. Analise as afirmações a seguir e marque a opção em que todas são corretas. I) Derivada não pode sobrescrever os métodos protegidos de “Base”. II) Todos os métodos públicos e protegidos de “Derivada” devem ter a mesma assinatura que os de “Base”. III) Todos os métodos públicos e protegidos de “Base” que forem redefinidos em “Derivada” devem ter a mesma assinatura. A) I B) II C) III D) I e III E) I e II A alternativa "C" está correta. 2. Estruturas de dados são mecanismos fundamentais para a manipulação de dados e possuem impacto na performance de um software. Java fornece implementações de algumas estruturas por meio do Java Collections Framework. Sobre o assunto, marque a única opção correta. A) Uma desvantagem das coleções é que os iteradores não são providos, precisando ser desenvolvidos, pelo programador. B) Uma desvantagem das coleções é que não podem ser usadas com tipos de dados criados pelo programador (classes), já que sua estrutura é desconhecida. C) Nenhuma das estruturas implementa o controle de duplicidade de objetos inseridos. D) Mais de um tipo de coleção permite a implementação de fila (FIFO). E) A coleção “List” implementa uma lista de prioridades. A alternativa "D" está correta. 3. Sobre os métodos “equals” e “hashCode” da classe “Objects”, podemos afirmar que: A) Mudanças em “equals” podem ensejar mudanças em “hashCode”, mas o inverso nunca ocorre. B) Como “equals” é herdado por todos os objetos, não necessita ser modificado para estabelecer a igualdade de objetos. C) O método “equals” sempre depende de “hashCode” para estabelecer a igualdade. D) A modificação de um sempre imporá a modificação de outro. E) Objetos iguais terem código hash distintos viola o contrato geral de “hashCode”. A alternativa "E" está correta. 4. Um dos métodos da classe “Objects” é o “toString”, que retorna uma representação textual do objeto. Sobre esse método, são feitas as seguintes afirmações: I) São informações obrigatórias, mesmo se ele for redefinido, o nome completamente qualificado do objeto e seu código hash. II) Ele pode ser invocado em um objeto do tipo String. III) O código hash informado por “toString” é um identificador único do objeto. Marque a opção que contém a afirmativa correta: A) I. B) II. C) III. D) I e II. E) II e III. A alternativa "B" está correta. 5. Uma classe abstrata em Java é declarada pelo uso do modificador abstract. Analise as opções abaixo e marque a correta sobre o assunto. A) Se declararmos uma classe como abstrata, seus métodos também deverão ser declarados abstratos. B) Uma classe abstrata pode estender uma classe concreta. C) Uma classe abstrata admite herança múltipla se as superclasses também forem abstratas. D) Uma classe concreta não pode possuir referência para uma classe abstrata. E) Um método abstrato não pode ser herdado. A alternativa "B" está correta. 6. Considere o trecho de código a seguir: 1. public class Principal { 2. //Atributos 3. private static final Escola ref = new Escola ( ); 4. 5. //Métodos 6. public static void main (String args[]) { 7. ref.atualizarAtributoNome ("Rio de Janeiro"); 8. ref = new Escola (); 9. } 10. } O método “atualizarAtributoNome” atualiza o atributo “nome” de tipo “String” da classe “Escola”. É correto afirmar que: A) A linha 7 irá gerar erro de compilação, pois “ref” é final. B) A linha 8 irá criar uma instância que não é final. C) A linha 8 irá gerar erro de compilação, pois “ref” é final. D) A linha 3 irá gerar erro de compilação, pois está instanciando uma variável final. E) As linhas 7 e 8 precisam ser invertidas para o programa compilar. A alternativa "C" está correta. 7. Sobre interfaces em Java, é correto afirmar que: A) A omissão do modificador “final” da declaração de um atributo irá gerar erro de compilação. B) Um atributo deve sempre ser declarado privado. C) Na implementação de uma interface, uma classe precisa implementar apenas os métodos abstratos que usará. D) Em uma interface não é necessário declarar os métodos como abstratos. E) Nenhum membro de uma interface pode conter corpo. A alternativa "D" está correta. 8. Suponha que um programa em Java possua a interface “iContabil”, que é superinterface de “iBalanco”. “iBalanco” é implementada pela classe concreta “Balanco”. Julgue as afirmativas: I) Podemos usar uma variável do tipo “iContabil” para referenciar um objeto do tipo “Pessoa” e, nesse caso, teremos acesso aos métodos de “iContabil” e “iBalanco”. II) Não é possível usar uma variável do tipo da superinterface para referenciar um objeto da classe que implementa “iBalanco”. III) “Balanco” deverá implementar todos os métodos abstratos de “iBalanco” e os de “iContabil” que não forem ocultados por “iBalanco”. A afirmativa correta é: A) Somente I. B) XSomente II. C) Somente III. D) I e II. E) II e III. A alternativa "C" está correta.