SóProvas


ID
2858800
Banca
CCV-UFC
Órgão
UFC
Ano
2018
Provas
Disciplina
Programação
Assuntos

Sobre a Programação Orientada a Objetos em Java, assinale o correto.

Alternativas
Comentários
  • a) O método main não pode ser sobrescrito. Correto, afinal é public static void main , se é statica NÃO PODE SER SOBRESCRITO.

    .

    b) Classes abstratas(não) podem ser instanciadas.

    .

    c) Uma interface deve fornecer a assinatura dos métodos e opcionalmente alguma implementação.

    . Alternativa pelo qual a banca inválidou a questão. Java 7 e anterioes: INTERFACE NÃO PODE POSSUI IMPLEMENTAÇÃO. JAVA 8: interface opcionalmente permite implementação através dos métodos default

    .

    d) Quando dois métodos com o mesmo nome, porém argumentos diferentes, existem na mesma classe chamamos de sobrescrita(sobrecarga) de método.

    .

    e) Quando uma subclasse declara um método que possui a mesma assinatura e mesmo tipo de retorno que um método declarado em sua superclasse, chamamos de sobrecarga (sobrescrita) de método.

    ATUALIZAÇÃO

    Colega Othon, o que você está fazendo seria OCULTAMENTO em java ( Hiding) e não sobrescrita(Overriding). Acredito que o colega seja um programador Pleno, ou até mesmo um programador Sênior, em Java, porém para questões de provas de concursos temos que ter embasamento bibliográfico para resolução das questões.

    .

    Conforme o livro Certificação Java 6 - Volume 2 - Prática - RUBINSTEIN :

    Métodos static podem ser escondidos por subclasses, mas não sobrescritos.

    .

    Diferença entre Hiding e Overriding( Leitura avançada sobre Programação, dificilmente cairá isto em prova - Texto em inglês)

    https://crunchify.com/java-method-hiding-and-overriding-override-static-method-in-java/

  • letra (a) está errada. Métods estáticos (STATIC) podem ser sobrescrito.

    Exemplo 2:

    Classe estática significa que o método pode ser chamado sem que a classe seja instanciada em um objeto.

    Isso é útil para a classe principal (em Java), a classe MAIN, que é a primeira a ser EXECUTADA.

    Os métodos ou classes do tipo STATIC são/estão acessíveis diretamente pela classe, não precisam ser instanciados, ou seja , não precisa fazer o NEW: Aluno joao new = Aluno(), para as classes, ou seja pode usar os métodos dessa classe, como é normalmente feito em um contexto de POO.

    Portanto o código a seguir correto, método do tipo STATIC sendo sobrescrito .

    Experimente em seu computador.

    package testeprogramacao;

    /**

     *

     * @author otluix

     */

    // filename TesteProgramacao.java

    public class TesteProgramacao {

     

      public static void foo() { System.out.println("Test.foo() called ");  } // assinatura do método foo()

      public static void foo(int a) {  System.out.println("Test.foo(int) called ");  } // sobrescrita (overload) do foo()

      public static void main(String[] args) {

        TesteProgramacao.foo();

        TesteProgramacao.foo(10);

      }

    }

    Output do programa a anterior:

    Test.foo() called 

    Test.foo(int) called

  • letra (a) está errada. Métodos estáticos (STATIC) podem sim serem sobrescrito.

    Exemplo 1:

    Sobrescrita do método principal (MAIN):

    public class TesteMain {

      public static void main(String arg1) { System.out.println("Mundo"); }

      public static void main(String arg1, String[] arg2) { System.out.println("Olá, Mundo!!"); }

    public static void main(String[] args) {

    System.out.println("Olá");

    TesteMain.main("segunda linha"}

    TesteMain.main("terceira", "linha"}

    }

    Output do programa acima:

    Olá

    Mundo

    Olá, Mundo!!

    Os métodos STATIC VOID MAIN foram todos executados, contudo, os métodos foram sobrescrito.

    $ javac --version

    javac 11.0.2

  • eu iria errar pois estou estudando c# e lá não permite que interface implemente a interface