Sobrescrito não altera a assinatura do método, enquanto sobrecarregado altera a assinatura do método passando outros parâmetros como por exemplo?
Sobrescrito não altera a assinatura do método, enquanto sobrecarregado altera a assinatura do método passando outros parâmetros como por exemplo?
Oi Manoel!
Um exemplo de uso da sobrecarga é quando queremos tornar flexível pra quem chama um método, passar determinado parâmetro porque ele pode ter um valor padrão. O método com o mesmo nome aparece mais de uma vez na classe, e a única forma que temos de diferenciar qual chamar é por meio da quantidade/tipo dos parâmetros.
Se pegarmos a própria API de datas que veio no Java 8, temos um exemplo disto. O método of()
da classe LocalDateTime
tem algumas sobrecargas, numa delas podemos passar ano, mes, dia, hora, minuto e segundo:
LocalDateTime horaComSegundo = LocalDateTime.of(2018, 09, 09, 12, 04, 05);
Mas podemos chamar o mesmo método sem passar os segundos, o que fará com que o LocalDateTime
o valor do segundo seja 0:
LocalDateTime horaComSegundo = LocalDateTime.of(2018, 09, 09, 12, 04);
Espero ter ajudado. Abraço!
Primeiramente assinatura do método é seu nome e seus parâmetros .
Sobrecarga é outro método com o mesmo nome , e uma lista de parâmetros diferentes(número e/ou tipos). O compilador não considera o tipo de retorno ao diferenciar métodos, portanto, você não pode declarar dois métodos com a mesma assinatura, mesmo se eles tiverem um tipo de retorno diferente.
Sobrescrita é de fato reescrever um método definido em uma classe pai como mesma assinatura, podendo alterar o tipo de retorna para um subtipo
Para maiores informações :
https://beginnersbook.com/2014/01/exception-handling-in-method-overriding-with-example/
https://docs.oracle.com/javase/tutorial/java/IandI/override.html
https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html
Esclaredora as respostas.