SóProvas


ID
1055890
Banca
CESPE / CEBRASPE
Órgão
STF
Ano
2013
Provas
Disciplina
Engenharia de Software
Assuntos

Em relação aos conceitos de programação orientada a objetos e lógica de programação, julgue os itens subsequentes.

Em programação orientada a objetos, polimorfismo é o princípio pelo qual duas ou mais classes derivadas da mesma superclasse podem invocar métodos que têm a mesma assinatura, mas comportamentos distintos.

Alternativas
Comentários
  • Polimorfismo tem duas formas:

    a)  sobrecarga: não depende de herança, dois métodos em uma mesma classe apresentam comportamentos diferentes, mesmo tendo o mesmo nome, os parâmetros são os elementos que os diferente no momentos da invocação. b)sobrescrita: um metodo da super classe é reescrito nas classes filhas de forma que cada uma implemente conforme a necessidade.
  • Somente complementando o comentário da colega, a questão trata do polimorfismo sobrescrita (overriding, polimorfismo dinâmico, polimorfismo verdadeiro). Ele ocorre em tempo de execução, pois somente nesse momento é que o compilador saberá qual método chamar dependendo de qual classe o método foi invocado.

    Espero ter contribuído!

  • http://waltercunha.com/blog/index.php/2010/03/12/polimorfismo-sobreposicao-e-sobrecarga-marcio-victorino/

  • discordo do gabarito: está se referindo apenas ao conceito de polimorfismo dinâmico. Polimorfismo, em seu conceito mais amplo na OO, são métodos com o mesmo NOME (e não assinatura) que executam operações distintas. No polimorfismo estático, os parâmetros são diferentes e o método é escolhido em tempo de compilação. O conceito descrito na questão não engloba esta forma de polimorfismo, logo, está errada.

  • A questão trata do polimorfismo dinâmico. Nesse tipo de polimorfismo, o método da filha vai sobrepor o método da mãe, caso forem iguais;  podendo ter comportamentos diferentes a depender da implementação.
  • Correto - é o caso do overloading, o qual implica em um mesmo metodo com operações distintas. exempl de overloading:

    package contestQuestions;

    public interface Operacoes {
        public int soma (int a, int b);
        public double soma(double a, double b);
     }

    package contestQuestions;

    public class Classs implements Operacoes{
        
        public Classs() {
            // TODO Auto-generated constructor stub
        }

        @Override
        public int soma(int a, int b) {
            // TODO Auto-generated method stub
            return a + b;
        }

        @Override
        public double soma(double a, double b) {
            // TODO Auto-generated method stub
            return a + b;
        }

    }

    package contestQuestions;

    public class Main {

        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Classs operacao1 = new Classs();
            
            System.out.println(operacao1.soma(25.0, 98.4));
            
        }

    }