-
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