SóProvas


ID
1405093
Banca
CS-UFG
Órgão
CELG/GT-GO
Ano
2014
Provas
Disciplina
Engenharia de Software
Assuntos

Para responder à questão, considere o seguinte:

(i) a classe AA, que possui um método denominado processa, o qual retorna o dobro do argumento fornecido ao método;

(ii) a classe BB, que estende a classe AA, e possui um método que sobrescreve o método processa, retornando o triplo do argumento fornecido ao método;

(iii) a classe CC, que estende a classe AA, e possui uma sobrecarga do método processa, retornando o somatório dos dois valores passados como argumentos ao método;

(iv) a classe DD, que estende a classe CC, e possui um método que sobrescreve o método processa, retornando o quádruplo do único argumento fornecido ao método; e

(v) todas as classes são públicas e todos os métodos são públicos.

Supondo o comportamento polimórfico de mensagens enviadas aos objetos das classes, a chamada do método processa com argumento igual a 3 (três) para objetos das classes AA, BB e CC resulta nos valores, respectivamente

Alternativas
Comentários
  • //'main' method must be in a class 'Rextester'.
    //Compiler version 1.8.0_111

    import java.util.*;
    import java.lang.*;

    public class AA {
        public int processa(int x) {
            return x*2;
        }
    }

    public class BB extends AA {
        @Override
        public int processa(int x) {
            return x*3;
        }
    }

    public class CC extends AA{
        @Override
        public int processa(int x) {
            return x+x;
        }
    }

    public class DD extends CC{
        @Override
        public int processa(int x) {
            return x*4;
        }
    }

    public class Main {
        public static void main(String args[]) {
            
            int x=3;
            
            AA a = new AA();
            int ra = a.processa(x);
            System.out.println("Retorno de processa AA = " + ra);
            
            BB b = new BB();
            int rb = b.processa(x);
            System.out.println("Retorno de processa BB = " + rb);
            
            CC c = new CC();
            int rc = c.processa(x);
            System.out.println("Retorno de processo CC = " + rc);
            
            //Caso eu chamasse o DD
            DD d = new DD();
            int rd = d.processa(x);
            System.out.println("Retorno de processo DD = " + rd);
            
        }
    }
     

    Quem quiser testa aqui e altera a visibilidade da das classes diferentes da Main para funcionar na ferramenta.

    https://www.tutorialspoint.com/compile_java_online.php

     

  • Parabéns, Daniel Concurseiro... assim fica mais fácil de entender.

  • Tem um erro na implementação do Daniel:

    "(iii) a classe CC, que estende a classe AA, e possui uma sobrecarga do método processa, retornando o somatório dos dois valores passados como argumentos ao método"

    A sobrecarga do método em CC recebe 2 argumentos: public int processa(int x, int y)

    Neste caso, ao chamar o método com apenas um argumento, o processa executado será o de AA. Por isso o resultado também é 6.