Agora que você está familiarizado com as regras para declarar métodos, é hora de analisar os métodos com a mesma assinatura na mesma classe. A sobrecarga de método ocorre quando existem assinaturas de método diferentes com o mesmo nome, mas parâmetros de tipo diferentes.
Estamos chamando métodos sobrecarregados há um tempo. System.out.println e StringBuilder ‘s Anexar métodos fornecem muitas versões sobrecarregadas de modo que você pode passar apenas sobre qualquer coisa para eles sem ter que pensar sobre isso. Nos dois exemplos, a única mudança foi o tipo do parâmetro. A sobrecarga também permite números diferentes de parâmetros.
Tudo, exceto a assinatura do método, pode variar para métodos sobrecarregados. este significa que pode haver diferentes modificadores de acesso, especificadores (como estáticos), tipos de retorno e listas de exceções.
Estes são todos os métodos sobrecarregados válidos:
public void fly(int numMiles) { }
public void fly(short numFeet) { }
public boolean fly() { return false; }
void fly(int numMiles, short numFeet) { }
public void fly(short numFeet, int numMiles) throws Exception { }
Como você pode ver, podemos sobrecarregar alterando qualquer coisa na lista de parâmetros. Nós podemos ter um tipo diferente, mais tipos ou os mesmos tipos em uma ordem diferente. Observe também que o modificador de acesso e a lista de exceções são irrelevantes para a sobrecarga.
Agora vamos ver um exemplo que não é uma sobrecarga válida:
public void fly(int numMiles) { }
public int fly(int numMiles) { } // DOES NOT COMPILE
Este método não é compilado porque difere apenas do original por tipo de retorno. As listas de parâmetros são as mesmas, portanto, são métodos duplicados no que diz respeito ao Java.
E esses dois? Por que o segundo não é compilado?
public void fly(int numMiles) { }
public static void fly(int numMiles) { } // DOES NOT COMPILE
Novamente, a lista de parâmetros é a mesma. A única diferença é que uma é uma instância método e um é um método estático.
Chamar métodos sobrecarregados é fácil. Você acabou de escrever o código e o Java chama o correto. Para Por exemplo, observe estes dois métodos:
public void fly(int numMiles) {
System.out.println("short");
}
public void fly(short numFeet) {
System.out.println("short");
}
A chamada voa ((curta) 1); imprime brevemente. Ele procura por tipos correspondentes e chama os método apropriado. Claro, pode ser mais complicado que isso.
Agora que você conhece os conceitos básicos de sobrecarga, vejamos alguns cenários mais complexos que você pode encontrar no exame.