Existem dois tipos de polimorfismo que são conhecidos como sobrecarga (overload) e sobreposição (override).
*
A sobrecarga de métodos (overload) é um conceito do polimorfismo que consiste basicamente em criar variações de um mesmo método, ou seja, a criação de dois ou mais métodos com nomes totalmente iguais em uma classe. A Sobrecarga permite que utilizemos o mesmo nome em mais de um método contanto que suas listas de argumentos sejam diferentes para que seja feita a separação dos mesmos.
*
A Sobreposição de métodos (override) é um conceito do polimorfismo que nos permite reescrever um método, ou seja, podemos reescrever nas classes filhas métodos criados inicialmente na classe pai, os métodos que serão sobrepostos, diferentemente dos sobrecarregados, devem possuir o mesmo nome, tipo de retorno e quantidade de parâmetros do método inicial, porém o mesmo será implementado com especificações da classe atual, podendo adicionar um algo a mais ou não.
*
Diferente da sobrecarga, a sobreposição funciona por meio do sistema de herança, e para a mesma funcionar o nome e lista de argumentos dos métodos devem ser totalmente iguais aos da classe herdada.
*
A sobrecarga está ligada a variância de estados de um método, podemos entende-la como um conjunto de opções que o programa principal tem para escolher quando recebe os parâmetros passados pelo usuário. Se tivéssemos apenas um método e não utilizarmos a sobrecarga nele, ao passarmos um parâmetro que não consta nesse método, ocorreriam erros no programa. Já com a sobrecarga conseguimos criar variações de um mesmo método conseguindo assim mais opções de uso para ele, então, para a mesma funcionar os métodos devem conter nomes iguais e listas de argumentos diferentes.
**
Enquanto a sobrecarga da vida a variação de métodos, a sobreposição possibilita a extensibilidade dos mesmos, pois com ela podemos reescrever métodos criados anteriormente, permitindo assim a criação de versões mais específicas deles. Com a sobreposição podemos pegar um método genérico e transformá-lo em específico, implementando novas funcionalidades pertinentes da classe à qual ele está. Diferente da sobrecarga, a sobreposição funciona por meio do sistema de herança, e para a mesma funcionar o nome e lista de argumentos dos métodos devem ser totalmente iguais aos da classe herdada.
*
Fonte: https://www.devmedia.com.br/sobrecarga-e-sobreposicao-de-metodos-em-orientacao-a-objetos/33066