ID 790951 Banca FCC Órgão TST Ano 2012 Provas FCC - 2012 - TST - Analista Judiciário - Análise de Sistemas Disciplina Engenharia de Software Assuntos Orientação a Objetos Na orientação a objetos Alternativas a herança permite que os membros de uma classe, chamada de classe-pai, possam ser reaproveitados na definição de outra classe, chamada de classe-filha. Esta classe-filha tem acesso aos membros públicos e protegidos da classe-pai. O polimorfismo, associado à herança, permite que métodos abstratos definidos em uma classe abstrata sejam implementados nas classes-filhas, podendo estes métodos, nas classes-filhas, apresentar comportamentos distintos. atributos e métodos podem ser reaproveitados através da herança, quando uma subclasse herda as características de uma superclasse. Uma subclasse pode ter acesso aos membros de uma superclasse, independente do modificador atribuído. O polimorfismo é um recurso que permite a uma subclasse reimplementar os métodos herdados de uma superclasse, sendo este método abstrato ou não. a herança e o polimorfismo são complementares, ou seja, devem ser aplicados em conjunto. A herança existe a partir de classes abstratas que contêm atributos e métodos abstratos. O polimorfismo obriga que as classes-filhas implementem os métodos e atributos desta classe-pai. O acesso aos atributos da classe-pai independe do modificador utilizado. o conceito de herança estabelece que uma classe possa aproveitar a implementação, definições dos atributos e métodos de uma classe-base. A classe-filha pode ter acesso aos métodos e atributos públicos e protegidos da classe-base. O polimorfismo é aplicado ao caso em que existe a necessidade de implementar métodos sobrecarregados, nos quais a classe-filha necessita implementar dois métodos com o mesmo nome e parâmetros diferentes. o polimorfismo é uma técnica que permite um objeto nascer a partir do uso de sobrecarga de construtores de uma classe, ou seja, o polimorfismo permite que um objeto possa ser instanciado de diferentes maneiras. A herança permite que uma classe sirva de base para que outras classes sejam implementadas. Entretanto, os membros com modificadores públicos da classe-base podem ser acessados pela classe-filha. Responder Comentários Acredito que a "D" não está incorreta, só incompleta. Diz que :O polimorfismo é aplicado ao caso em que existe a necessidade de implementar métodos sobrecarregados, nos quais a classe-filha necessita implementar dois métodos com o mesmo nome e parâmetros diferentes.Isso é o chamado polimorfismo de Ad-hoc (sobrecarga/overload). Conforme a definição do Wikipedia: Existem três tipos de polimorfismo que a linguagem pode ter (atente para o fato de que nem toda linguagem orientada a objeto tem implementado todos os tipos de polimorfismo): Universal Inclusão - um ponteiro para classe mãe pode apontar para uma instância de uma classe filha (exemplo em Java: List lista = new LinkedList(); (tipo de polimorfismo mais básico que existe) Paramétrico - se restringe ao uso de templates (C++, por exemplo) e generics (C#/Java) Ad-Hoc Sobrecarga - duas funções/métodos com o mesmo nome mas assinaturas diferentes Ele só não citou os outros polimorfismos, mas isso não invalida a questão.Alguém pode comentar? Colega você matou a questão.Você disse que a questão está incompleta, por este motivo devemos marcar a alternativa mais completa que por sinal é a letra A. Na época da prova errei essa questão e fiquei indignado, por acreditar que haviam dois itens corretos (A e D) Acontece que houve uma troca sutíl no que se refere a sobrescrita e sobrecarga.A questão está errada pelo simples fato que troucou sobreescrita por sobrecarga. A sobrecarga ocorre quando o mesmo método recebe parâmetros diferentes, na mesma classe. A questão D também está certa, mas FCC é a MAIS CORRETA."O conceito de herança estabelece que uma classe possa aproveitar ..." - o mais correto seria REAPROVEITAR. "O polimorfismo é aplicado ao caso em que existe a necessidade de implementar métodos sobrecarregados" Polimorfismo não é só sobrecarga, também há sobrescrita. Não acho que a letra D esteja certa. Este trecho: "a classe-filha necessita implementar dois métodos com o mesmo nome" A classe filha pode sobrescrever apenas 1 dos dois métodos sobrecarregados, não precisa implementar os 2. Uma Dica: quando a questão não falar qual polimorfismo é, ela está se referindo ao dinâmico. Bons estudos!! A alternativa (a) apresenta um erro quando diz que "métodos abstratos definidos em uma classe abstrata" . Não é necessário que a classe-pai seja abstrata para se definir comportamentos diferentes nas classes filhas. A alternativo (d) apresenta um erro quando diz que "a classe-filha necessita implementar dois métodos com o mesmo nome e parâmetros diferentes". A sobrecarga é a declaração de dois ou mais métodos com o mesmo nome e parâmetros diferentes, e não há necessidade de que seja uma classe-filha para se fazer sobrecarga de método. A frase "O polimorfismo é aplicado ao caso em que existe a necessidade de implementar métodos sobrecarregados", está correta; e pode ser reescrita como "no caso em que haja a necessidade de implementar métodos sobrecarregados aplica-se o polimorfismo". Conclusão: Não dá para dizer qual a mais errada (ou mais certa). Discordo do comentário acima com relação a existir erro na alternativa A.Lendo com atenção temos o seguinte: O polimorfismo, associado à herança, permite que métodos abstratos definidos em uma classe abstrata sejam implementados nas classes-filhas.A frase está perfeita. De fato, o polimorfismo permite definir métodos abstratos e sobrescreve-los em subclasses. Em nenhum momento a questão disse que somente métodos abstratos podem ser sobrescritos.Bons estudos a todos a) correta e linda.b) errado - pois o modificador Private nega acesso as subclasse.c) errado - o polimorfismo pelo contrario, proporciona a subclasse implementar o método da classe pai "de forma personalizada"d) errado - são métodos sobrescritos e não sobrecarregadose) errado - é a propriedade segundo a qual uma operação pode comportar-se de maneira diferente em classes diferentes (Rumbaugh) Eliminei a D com o seguinte raciocínio:A classe filha não necessita implementar os métodos sobrecarregados, ela simplesmente herda. A letra D é um tanto quanto confusa. Quando relacionado a parte da herança esta certo. Quando fala do polimorfismo existe o que chamamos de polimorfismo estático, que é justamente a sobrecarga de um método com assinaturas diferentes. Analisando separadamente, ambas afirmações estão corretas. Agora em conjunto elas apresentam erro por acontecer uma sobrescrita do método na herança e não uma sobrecarga. Porem, eu poderia realizar a herança normalmente, e realizar um polimorfismo estático apenas na classe filha de um método que não estivesse na classe base, o que não invalidaria a alternativa Cada alternativa grande danada kkkk.Se não tiver cuidado, se perde e erra.