Bem a minha dúvida sobre sobreposição e sobrecarga é a seguinte pra ser mais exato. Algumas questões falam de sobreposição e sobrecarga. Mas em algum momento elas também falam de sobrescrever.
Pensei que sobrescrever e sobrepor fossem a mesma coisa.
Ex: Um método sobrescreveu outro, ou então, um metodo sobrepos o outro.
Vou por um exemplo para ficar mais claro:
public class MyClass{
public static void main(String[] agrs){
//algo...
}
void ametho(int i){
}
[b]private int amethod(float i){ return 0; }[/b]
}
class MySubclass extends MyClass{
[b] void amethod(int i) throws RuntimeException{}[/b]
}
Alternativas:
A) protected void amethod(int i) throws Exception{}
B) public int amethod(int i) {return 0;}
C) void amethod(int i) throws RuntimeException{}
D) private int amethod (float i) {return 0;}
Explicação: Para uma sobrecarga válida, a lista de argumentos do método deve er diferente, o tipo de retorno pode ou não ser diferente. Portanto, a alternativa D é o modo válido de sobrecarga do metodo amethod da classe MyClass. O modificador de acesso não imprta em sobrecargas. A alternativa C é um modo válido de sobrescrever o método amethod, desde que o tipo de retorno e argumento sejam compativeis. O modificador de acesso é permitido de ser igual ou mais publico em sobreposições, portando isto também não é um problema. De qualquer forma, não é permitido lançar novas exceções checadas, lançar exceções não checadas é nenhum problema em sobreposições.